2016-05-24 13 views
0

Ich entwickle eine Typo3-Erweiterung, die PHP verwendet, um verschiedene Shell-Skripte zu steuern und auszuführen. Das Problem ist, dass die Skripts gleichzeitig ausgeführt werden und das Laden der Seite blockieren.PHP-Threading-Implementierung für eine Erweiterung

Wie kann ich Pthreads, Gearmanworker, Deamon ... oder einen Fake Thread Hack implementieren, ohne es auf dem Webserver zu installieren/das Problem zu umgehen?

Edit:

  • brauche ich die Ausgabe

  • Die PHP-Version ist 5.4.45

+0

Benötigen Sie die Ausgabe dieser Skripte oder müssen Sie sie nur auslösen? – Mjh

+0

Ich brauche die Ausgabe. Die momentane Ausführung wäre: exec ($ scriptFilePath. '2> & 1', $ this-> Ausgabe); – PHPAtWork

+0

Wenn Sie 'php-fpm' verwenden, können Sie [fastcgi_finish_request] (http://php.net/fastcgi_finish_request) verwenden, um die Antwort an den Browser zurückzugeben und die Arbeit im Hintergrund fortzusetzen. Aber da Sie die Ausgabe benötigen .. können Sie Pthreads-Erweiterung für PHP versuchen. – Mjh

Antwort

0

Ich vermute, dass die Schalenausführungen für ihre Rückkehr warten Werte vor dem ursprünglichen PHP-Skript fortgesetzt. Wenn Sie eine parallele Verarbeitung erreichen wollen, müssen Sie etwas tun wie nohup myscript.sh > /dev/null 2>&1 (das vom Betriebssystem abhängig sein kann). Nohup lässt den Befehl ohne den übergeordneten Prozess weiterlaufen und leitet STDERR dann an STDOUT und dann an/dev/null weiter. Wenn Sie dies in einer Protokolldatei erfassen möchten, ändern Sie das einfach dorthin, wo Sie es möchten.

Hoffe, dass hilft!

Verwandte Themen