Mehrere Skripte aus einem aufrufen

Sorry, ich habe eine total bescheuerte Frage, aber ich find es einfach nicht. Kann mal jemand mein Brett vorm Kopf wegnehmen?
Ich habe einen Cronjob, der die php „cronjobs.php“ aufrufen soll und zwar alle 5 Minuten.

Die cronjobs.php soll dann nacheinander mehrere andere php-Skripte aufrufen, z.B. cronjobs1.php, cronjobs2.php usw. Diese php´s liegen aber auch auf anderen Servern rum.
Ich habe es mit header versucht, aber das klappt nicht, weil dann nur der letzte header ausgeführt wird und die anderen ignoriert werden.

<?php header("Location: http://www.tantrazentrum.de/cronjobs1.php");
header("Location: [http://www.tantrazentrum.de/cronjobs2.php"](http://www.tantrazentrum.de/cronjobs2.php%22)); ?\> Dirk.

Ich würde einfach readfile(htt…); schreiben.

eher include bzw require :smile:

gruß
Phillip

Ich würde einfach readfile(htt…); schreiben.

eher include bzw require

bei Scripten auf dem eigenen Server schon.

Wenn die Scripte aber auf anderen Servern liegen, muss man sie nur per HTTP aufrufen, das Ausführen übernimmt dann der andere Server. Und HTTP-Aufrufe gehen am einfachsten über readfile().

readfile()-Aufrufe sind auch bei Scripten auf dem eigenen Server mitunter sinnvoll, nämlich wenn in mehreren Scripten die gleiche Variable verwendet wird, ohne dass sie initialisiert wird. Wenn dann im zweiten Script die Variable zu Beginn nicht wie erwartet Dauf 0 steht, kann dass eigenartige Ergebnise erzeugen. Bei readfile() muss man aber über HTTP und nicht übers Dateisystem aufrufen.

sry hatte das liegt auf anderen servern überlesen

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ich würde einfach readfile(htt…); schreiben.

Ich bekam nun schon den Tip es mit include zu versuchen.
Beides scheint zu funktionieren.
Ich habe auch schon mal die Referenz gelesen, sehe aber nicht wirklich den Unterschied zwischen den beiden Befehlen.
Kannst Du kurz schreiben, was davon in meinem Falle geeigneter ist und warum?
Vielen Dank schonmal soweit.

Dirk.

Hallo

Ich bekam nun schon den Tip es mit include zu versuchen.
Beides scheint zu funktionieren.
Ich habe auch schon mal die Referenz gelesen, sehe aber nicht
wirklich den Unterschied zwischen den beiden Befehlen.

Wenn du eine PHP-Datei per HTTP von einem Server abrufst, dann wird sie dabei auf diesem Server geparst. Wenn du dagegen serverintern (also mit /www/htdocs/username/drt.php oder so) auf eine Datei zugreifst, wird sie dabei nicht geparst.

Wenn du eine Datei mit readfile() einliest, wird sie nicht von readfile() geparst, sondern wie mit echo() ausgegeben. Wenn du readfile() mit HTTP verwendest, wird die Datei jedoch auf dem Server geparst, von dem du sie abrufst. Rufst du sie serverintern ab, wird sie gar nicht geparst.

Wenn du eine Datei mit include() einliest, dann wird diese Datei so behandelt, als stände sie an dieser Stelle im ausführenden Script. Allerdings musst du in der eingebundenen Datei nochmals <?php und am Ende ?> schreiben. Wenn du include() jedoch mit http://…/dateiname.php verwendest, wird die Datei schon beim Abruf vom Server, wo die Datei liegt, geparst. Dadurch verschwindet sämtlicher PHP-Code aus der Datei (wenn nicht von der PHP-Datei neuer PHP-Code ausgegeben wird), noch bevor sie durch include() ein zweites Mal geparst wird (was logischerweise keine Wirkung mehr zeigt, da nur noch HTML-Code enthalten ist).

Um zu vermeiden, dass die Datei schon beim Abruf vom entfernten Server geparst wird und somit nicht im Urzustand bei inlude() ankommt, muss man sie in .txt umbenennen. Das hat allerdings zur Folge, dass auch ein jeder die Datei ungeparst mit dem Browser aufrufen kann. Auch könntest du auf die Datei per FTP zugreifen.

Also: Mit readfile(‚http://…‘) (include(‚http://…‘) hat meist die selbe Wirkung, aber mehr Rechenaufwand) wird die Datei als eigenständiges Script ausgeführt und die ausgegebenen Daten werden wie mit echo() im aufrufenden Script ausgegeben.
Mit include() wird die Datei als Teil des aufrufenden Scripts ausgeführt, wodurch z.B. Variablen gegenseitig verfügbar sind. Allerdings hat include() beim Zugriff auf auf entfernte PHP-Dateien meist die selbe Wirkung wie readfile().

Wenn du also serverintern auf die Datei zugreifst, musst du include() verwenden, da sonst nichts geparst wird. Wenn du hingegen über HTTP zugreifst, zeigen include() und readfile() die gleiche Wirkung. Eine Ausnahme stellt folgender Code dar:<?php echo "<?php exit; ?>";
?>
In diesem Fall passiert bei readfile(‚http://…‘) nichts, während mit include(‚http://…‘) das Script beendet wird.

Danke für diese sehr ausführliche und verständliche Antwort.
Funktioniert jetzt einwandfrei.

Dirk.