Hallo,
ich möchte aus meinem PHP-Script heraus ein fremdes PHP-Script ausführen, ähnlich wie man auch über exec() beliebige Kommandozeilenprogramme ausführen kann.
Das fremde PHP-Script soll komplett getrennt von meinem eigenen Script laufen, während mein Script darauf wartet bis das fremde Script beendet ist und dessen Rückgabe auswertet.
Ein include kommt nicht in Frage, weil das fremde Script...:
* ... Daten an den Browser senden könnte
* ... Variablen des Ausgangs-Script verändern könnte
* ... das gesamte Script per die() beenden könnte
PHP-CLI
Die erste Idee wäre also einfach fremd.php als CLI auszuführen und die Textausgabe auszuwerten:
exec("php fremd.php 123", $ausgabe = array(), $return_val);
fremd.php
Klappt auch soweit. Wie mach ich das aber auf Systemen, wo ich nicht weiß, wo sich die php-Binary befindet? Wenn man xampp unter Windows installiert, wird die php.exe beispielsweise nicht standardmäßig in die Umgebungsvariable %PATH% eingetragen. Ich muss also den vollen Pfad zur php-Binary kennen.
Wie komme ich möglichst sicher an den korrekten Pfad?
Wie stelle ich sicher, dass es sowohl unter gängigen Windows- als auch POSIX-Systemen läuft?
pcntl_fork
Bin zufällig auf [man]pcntl_fork()[/man] gestoßen.
Eventuell könnte ich dann das fremde Script einfach im Kindprozess ausführen, während der Vaterprozess auf den Kindprozess wartet?
Gibt es soetwas auch für Windows-Systeme?
Andere Möglichkeiten?
Gibt es noch andere Möglichkeiten fremde PHP-Scripte gtrennt vom eigenen Script auszuführen?
Bin für jede Hilfe dankbar
ich möchte aus meinem PHP-Script heraus ein fremdes PHP-Script ausführen, ähnlich wie man auch über exec() beliebige Kommandozeilenprogramme ausführen kann.
Das fremde PHP-Script soll komplett getrennt von meinem eigenen Script laufen, während mein Script darauf wartet bis das fremde Script beendet ist und dessen Rückgabe auswertet.
Ein include kommt nicht in Frage, weil das fremde Script...:
* ... Daten an den Browser senden könnte
* ... Variablen des Ausgangs-Script verändern könnte
* ... das gesamte Script per die() beenden könnte
PHP-CLI
Die erste Idee wäre also einfach fremd.php als CLI auszuführen und die Textausgabe auszuwerten:
exec("php fremd.php 123", $ausgabe = array(), $return_val);
fremd.php
PHP-Code:
<?php
$x = isset($argv[1]) ? (int) $argv[1] : 42;
$result = array();
$result["quadrat"] = $x*$x;
$result["log10"] = log10($x);
$result["time"] = time();
echo serialize($result);
?>
Wie komme ich möglichst sicher an den korrekten Pfad?
Wie stelle ich sicher, dass es sowohl unter gängigen Windows- als auch POSIX-Systemen läuft?
pcntl_fork
Bin zufällig auf [man]pcntl_fork()[/man] gestoßen.
Eventuell könnte ich dann das fremde Script einfach im Kindprozess ausführen, während der Vaterprozess auf den Kindprozess wartet?
Gibt es soetwas auch für Windows-Systeme?
Andere Möglichkeiten?
Gibt es noch andere Möglichkeiten fremde PHP-Scripte gtrennt vom eigenen Script auszuführen?
Bin für jede Hilfe dankbar

Kommentar