Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menjalankan Perintah PHP Secara Asynchronously Tanpa Menyekat?

Bagaimana untuk Menjalankan Perintah PHP Secara Asynchronously Tanpa Menyekat?

Patricia Arquette
Patricia Arquetteasal
2024-12-09 12:00:25495semak imbas

How to Run PHP Commands Asynchronously Without Blocking?

Cara Melaksanakan Perintah PHP Tanpa Menunggu Keputusan

Dalam PHP, arahan exec boleh menjalankan perintah luaran, tetapi secara lalai, PHP menunggu untuk arahan selesai sebelum meneruskan. Walau bagaimanapun, dalam senario tertentu, adalah wajar untuk memulakan arahan dan meneruskan tugas lain tanpa menunggu keputusan.

Penyelesaian:

Dokumentasi PHP menyediakan penyelesaian untuk melaksanakan arahan tanpa menyekat:

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

Ini arahan:

  1. Melaksanakan arahan run_baby_run.
  2. Mengubah hala keluaran standard dan ralat standardnya ke /dev/null, menekan sebarang output daripada arahan.
  3. Melatarbelakangkan arahan, mencipta proses berasingan yang berjalan secara bebas daripada PHP skrip.

Penyelesaian Alternatif untuk Menyahkan Proses:

Untuk menanggalkan proses daripada utas Apache dan memastikan ia terus berjalan walaupun skrip PHP ditamatkan, gunakan arahan ini:

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

Arahan ini:

  1. Melancarkan sesi bash.
  2. Menjalankan nohup untuk menghalang proses daripada ditamatkan jika skrip panggilan keluar.
  3. Menetapkan ID sesi baharu (setsid) untuk memisahkan proses daripada yang semasa.
  4. Menindas output seperti sebelumnya.

Atas ialah kandungan terperinci Bagaimana untuk Menjalankan Perintah PHP Secara Asynchronously Tanpa Menyekat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn