PHP-Datei ausführen, alte abbrechen
thecreep
- php
Hallo,
ich wollte mal fragen ob es Möglich ist, wenn man 2 (oder mehr) PHP-Dateien hat, aus der einen Datei heraus die neue Aufzurufen, aber die alte Dann nicht mehr "laufen" zu lassen.
Geht sowas?
cuz thecreep
hallo,
suchst du exit;?
Naja eigentlich nicht, denke ich. Es sei denn folgendes würde funktionieren:
index.php:
<?php
echo "bla";
include("bla.php")
echo "bla ende";
exit();
?>
bla.php:
<?php
sleep(10);
//do something
?>
ich möchte, dass index.php schon abgeschlossen ist, wenn bla.php ausgeführt wird. Und mit dem exit würde ich das so verstehen, dass "bla" ausgegeben wird, dann bla.php abgearbeitet wird, dann "bla ende" ausgegeben wird und dann exit aufgerufen wird. (Wenn ich mich irre dann sofort meckern!)
Hm, ich probiers mal so zu erklären.
Wenn man bei Windows 2 Stapelverarbeitungsdatein (BAT) hat, und diese nach einander in der Konsole ausführt, dann ist die erste Verarbeitung abgeschlossen aber die zweite läuft noch.
Kann man sowas mit register_shutdown_function bewirken? Ich mache in keinem Script eine Ausgabe (es sei denn es ist eine Fehlermeldung :?)
MfG
thecreep
Hi,
ich möchte, dass index.php schon abgeschlossen ist, wenn bla.php ausgeführt wird.
Aus welchem Grund legst du auf diese Anforderung wert>
Wenn man bei Windows 2 Stapelverarbeitungsdatein (BAT) hat, und diese nach einander in der Konsole ausführt, dann ist die erste Verarbeitung abgeschlossen aber die zweite läuft noch.
Wenn du zwei PHP-Script nacheinander ausführst, dann ist das bei denen genauso.
Wenn du also zwei PHP-Scripte über zwei nacheinander erfolgende HTTP-Requests startest, oder über die Konsole - dann hättest schon was du wolltest.
Welchen Unterschied es macht, wenn aber nicht beide Scripte einzeln gestartet werden, sondern das eine das andere aufruft, sollte erst mal klar sein.
MfG ChrisB
Welchen Unterschied es macht, wenn aber nicht beide Scripte einzeln gestartet werden, sondern das eine das andere aufruft, sollte erst mal klar sein.
Nunja, das zweite soll aus dem ersten herausgestartet werden, weil das erstere Scrpt bestimmt, welches der zweite Script ist.
Das zweite (also alle die das zweite wären, sollen dann alles abarbeiten und dann das erste Script wieder aufrufen, allerdings mit anderen Parametern)
Das erste Script soll per Browser dann aufgerufen werden können, um dann eine Abarbeitung des ganzen auf eine Zeitspanne von ca 3 Tagen zu verteilen.
MfG
thecreep
Nunja, das zweite soll aus dem ersten herausgestartet werden, weil das erstere Scrpt bestimmt, welches der zweite Script ist.
das geht auch innerhalb eines Scriptes mit bedingten[1] Includes.
Das zweite (also alle die das zweite wären, sollen dann alles abarbeiten und dann das erste Script wieder aufrufen, allerdings mit anderen Parametern)
Währe hier unnötig, da du einfach die Variablem am Ende änderst um diese in der Ursprungs-PHP-Datei auszuwerten.
Das erste Script soll per Browser dann aufgerufen werden können, um dann eine Abarbeitung des ganzen auf eine Zeitspanne von ca 3 Tagen zu verteilen.
Geht es um die Verarbeitung großer Datenmengen und du willst mit diesem Trick die Maximalzeiten von Scripten umgehen?
MfG
thecreep
mfg Pryos
[1] IF
Geht es um die Verarbeitung großer Datenmengen und du willst mit diesem Trick die Maximalzeiten von Scripten umgehen?
Genau diese Maximalzeit ist mein Problem. Ich hatte schon mal eine "Programmschleife" gebastelt, welches HTTP-Anfragen stellt, allerdings schaff ich schon nichtmal die zweite unter 60 Sekunden. Die ersten beiden Anfragen müssen innerhalb dieser Zeit beendet sein, danach wird in einer zufälligen Zeit von 5 bis 15 Minuten eine neue Anfrage gesendet und ausgewertet.
Dadurch geht das mit den bedingten includes nicht wirklich.
MfG
thecreep
Geht es um die Verarbeitung großer Datenmengen und du willst mit diesem Trick die Maximalzeiten von Scripten umgehen?
...
Eventuell hilft dir das weiter.
Im Prinzip ist das genau deine Anforderung. Erst den Link folgen, danach hier weiter lesen:
Startscript wird aufgerufen.
Startscript überprüft ob Daten vorhanden.
-> Wenn Ja: Daten ausgeben und beenden.
-> Wenn Nein: Startscript überprüft ob PID vorhanden.
=> Wenn Nein: Startscript started CGI Script mit entsprechenden Parametern
Startscript gibt "Anfrage wird bearbeited, bitte warten" oder so aus und beendet sich mit einem Meta-Refresh von x Minuten/Stunden.
CGI Script überprüft ob PID vorhanden, wenn ja abbruch, wenn nein anlegen.
CGI Script verarbeitet die Daten entweder direkt oder ruft Scripte auf die das macht. PID wird immer überprüft.
CGI Script speichert Daten.
CGI Script beendet Verarbeitung und entfernt PID.
Geht es um die Verarbeitung großer Datenmengen und du willst mit diesem Trick die Maximalzeiten von Scripten umgehen?
...
Eventuell hilft dir das weiter.Im Prinzip ist das genau deine Anforderung. Erst den Link folgen, danach hier weiter lesen:
Startscript wird aufgerufen.
Startscript überprüft ob Daten vorhanden.
-> Wenn Ja: Daten ausgeben und beenden.
-> Wenn Nein: Startscript überprüft ob PID vorhanden.
=> Wenn Nein: Startscript started CGI Script mit entsprechenden ParameternStartscript gibt "Anfrage wird bearbeited, bitte warten" oder so aus und beendet sich mit einem Meta-Refresh von x Minuten/Stunden.
CGI Script überprüft ob PID vorhanden, wenn ja abbruch, wenn nein anlegen.
CGI Script verarbeitet die Daten entweder direkt oder ruft Scripte auf die das macht. PID wird immer überprüft.
CGI Script speichert Daten.
CGI Script beendet Verarbeitung und entfernt PID.
Öhhm ... Die Frage ist jetzt bestimmt doof (*rolleyes*):
Kann man das auch mit PHP machen? (Ich hab mich mit CGI noch kein bischen auseinander gesetzt, lieber das eine verstehen als von beiden garnichts :?)
Ansonsten muss ich mich wohl in CGI einarbeiten :?
MfG
thecreep
Öhhm ... Die Frage ist jetzt bestimmt doof (*rolleyes*):
Irgendwie hab ich das Gefühl, das du den Link nicht gelesen hast
Ansonsten muss ich mich wohl in CGI einarbeiten :?
Nein.
Kann man das auch mit PHP machen? (Ich hab mich mit CGI noch kein bischen auseinander gesetzt, lieber das eine verstehen als von beiden garnichts :?)
Deine gesamte Verarbeitung läuft über PHP. Da das per exec aufgerufene Script nicht mehr vom Apache aufgerufen wird zählt es als CGI Script. Du musst also nichts neues lernen.
MfG
thecreep
mfg Pryos
PS: Bitte spare dir Dinge wie "*rolleyes*", ich persönlich finde es demjenigen der sich die Mühe macht dir zu Antworten abwertend gegenüber
CGI Script
Und ich hab die ganze Zeit ein Fehler im Kopf ;-)
Es heißt natürlich CLI.