2016-10-30 3 views
0

Ich habe eine PHP-Datei „test.php“ zu beenden, das zwei Funktionen folgende enthältshell_exec() sollte nicht für aufgerufene Funktion warten executuion

function scheduler($id, $url) { 
    // some code here that need some time to execute 
} 

function start_scheduler() { 
    $id = 10; 
    $url = "example.com"; 
    shell_exec(scheduler($id, $url) . "> /dev/null 2>/dev/null &"); 
    echo "Scheduler started"; 
    exit(); 
} 

Leider shell_exec() funktioniert nicht, was ich erwarte. Ich möchte, wenn start_scheduler() ausgeführt wird, sollte nicht warten, bis scheduler ($ id, $ url) die Ausführung beenden, statt echo "Scheduler gestartet" und beenden.

Antwort

1

Sie implizieren, dass PHP multi-threaded ist. Es ist nicht. Sie können nur einen Thread ausführen, was bedeutet, dass jede Zeile auf den vorherigen warten muss.

Wenn Sie etwas asynchron ausführen müssen, ist die beste Option, einen Cron-Job zu verwenden, damit Sie keinen Apache-Thread binden. Erstellen Sie einen Job, der das PHP-Skript über die Befehlszeile aufruft, damit es nicht interaktiv ist.

Verwandte Themen