Heim > Backend-Entwicklung > PHP-Tutorial > Wie führe ich PHP-Befehle asynchron aus, ohne sie zu blockieren?

Wie führe ich PHP-Befehle asynchron aus, ohne sie zu blockieren?

Patricia Arquette
Freigeben: 2024-12-09 12:00:25
Original
501 Leute haben es durchsucht

How to Run PHP Commands Asynchronously Without Blocking?

So führen Sie PHP-Befehle aus, ohne auf Ergebnisse zu warten

In PHP kann der Befehl exec externe Befehle ausführen, aber standardmäßig wartet PHP bis der Befehl beendet ist, bevor Sie fortfahren. In bestimmten Szenarien ist es jedoch wünschenswert, einen Befehl zu starten und mit anderen Aufgaben fortzufahren, ohne auf die Ergebnisse zu warten.

Lösung:

Die PHP-Dokumentation bietet eine Lösung um Befehle ohne Blockierung auszuführen:

// Redirect stdout and stderr to /dev/null to suppress output
exec('run_baby_run > /dev/null 2>&1 &');
Nach dem Login kopieren

Dieser Befehl:

  1. Führt aus run_baby_run-Befehl.
  2. Leitet die Standardausgabe und den Standardfehler nach /dev/null um und unterdrückt jegliche Ausgabe des Befehls.
  3. Stellt den Befehl in den Hintergrund und erstellt einen separaten Prozess, der unabhängig vom PHP-Skript ausgeführt wird .

Alternative Lösung zum Lösen der Prozess:

Um den Prozess vom Apache-Thread zu trennen und sicherzustellen, dass er auch dann weiterläuft, wenn das PHP-Skript beendet wird, verwenden Sie diesen Befehl:

exec('bash -c "exec nohup setsid your_command > /dev/null 2>&1 &"');
Nach dem Login kopieren

Diesen Befehl:

  1. Startet eine Bash-Sitzung.
  2. Führt nohup aus, um zu verhindern, dass der Prozess beendet wird, wenn das aufrufende Skript ausgeführt wird wird beendet.
  3. Setzt eine neue Sitzungs-ID (setsid), um den Prozess vom aktuellen zu trennen.
  4. Unterdrückt die Ausgabe wie zuvor.

Das obige ist der detaillierte Inhalt vonWie führe ich PHP-Befehle asynchron aus, ohne sie zu blockieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage