Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
sideshow •-->


Anmeldedatum: 07.05.2002 Beiträge: 130
|
Verfasst am: 08.02.2008 - 11:12 Titel: Einfrierendes Programm bei Shell-Script Ausführung |
|
|
Hallo allerseits!
Ich habe ein Programm geschrieben das ständig läuft und alle 120 Sekunden drei Scripte ausführt. Die Scripte sind PHP Scripte die in der Shell ausgeführt werden. Warum ich das so gemacht habe tut nix zur Sache, leider konnte ich es nicht anders lösen. Mein Problem ist nun folgendes:
Hier werden die Scripte ausgeführt:
Code: |
-- Run scripts
on runScripts()
set cntScripts to count ScriptList
if cntScripts > 0 then
repeat with theScript in ScriptList
showStatus("Lade Script: " & theScript)
setScriptNameToInterface(theScript)
set sh_script to TransflexResourcesPath & "/" & theScript
tell application "Finder" to set exec_script to do shell script "." & sh_script & " &"
readLogfile()
resetScriptNameToInterface()
hideStatus()
end repeat
end if
end runScripts |
So, das funktioniert auch alles wunderbar! Nur eine kleine Sache stört mich. In einem PHP Script werden Daten aus einem Ordner geholt und auf einen Webserver übertragen. Sind viele Dateien in dem Ordner muss das PHP Script viel machen und das dauert seine Zeit.
In dieser Zeit aber friert mir dann meine Applikation total ein und ich habe keine Zugriff mehr darauf. Nachdem das Script fertig abgearbeitet wurde läuft das Problem wieder ohne Probleme weiter. Dauert es sehr lange mit dem PHP Script dann bekomme ich einen "Apple Event Timeout" in meinem Programm! Das möchte ich aber nicht!!!
Ich habe schon versucht die Scripte mit einem Ampersand am Schluss aufzurufen damit sie "im Hintergrund" laufen. Das klappt leider nicht!
Habt ihr ne Idee wie ich das lösen könnte?!
Bin für jede Hilfe dankbar! _________________ Meine Wenigkeit im Internet: http://www.sideshow-systems.de |
|
Nach oben |
|
 |
Skeeve •---->


Anmeldedatum: 20.04.2006 Beiträge: 1068
|
Verfasst am: 08.02.2008 - 13:18 Titel: |
|
|
1. "Finder" brauchst Du von "do shell script" nix zu erzählen. Das "tell" ist also überflüssig
2. Natürlich läuft es im Hintergrund, aber Dein AS wartet auf die Ausgabedaten. Solange STDOUT und STDERR noch mit Deinem AS verbunden sind, hast Du keine Chance.
Also: nicht nur "&" ans Ende hängen sondern "2>/dev/console 1>/dev/consol &" oder ähnliches, um STDERR und STDOUT freizugeben. _________________ "All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies") |
|
Nach oben |
|
 |
sideshow •-->


Anmeldedatum: 07.05.2002 Beiträge: 130
|
Verfasst am: 08.02.2008 - 13:28 Titel: |
|
|
Skeeve hat Folgendes geschrieben: | 1. "Finder" brauchst Du von "do shell script" nix zu erzählen. Das "tell" ist also überflüssig
2. Natürlich läuft es im Hintergrund, aber Dein AS wartet auf die Ausgabedaten. Solange STDOUT und STDERR noch mit Deinem AS verbunden sind, hast Du keine Chance.
Also: nicht nur "&" ans Ende hängen sondern "2>/dev/console 1>/dev/consol &" oder ähnliches, um STDERR und STDOUT freizugeben. |
Ah!!! Ok, das macht sinn! Dann leite ich den Output einfach z.B. nach /dev/null (weil brauchen tu ichs nicht weil ich es eh anders logge) und dann läuft mein Script einfach weiter! Ok - super!!!! Vielen Dank! _________________ Meine Wenigkeit im Internet: http://www.sideshow-systems.de |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2002 phpBB Group Deutsche Übersetzung von phpBB.de
|
|
|