Melaksanakan Perintah Shell Secara Asynchronous dalam PHP
Apabila melaksanakan skrip shell menggunakan PHP, selalunya wajar untuk melaksanakan operasi tak segerak tanpa menyekat pelaksanaan PHP. Ini amat berguna untuk proses yang panjang yang tidak sepatutnya menangguhkan permintaan PHP.
Walaupun PHP menawarkan pelbagai fungsi untuk pelaksanaan shell, termasuk exec(), shell_exec(), dan pcntl_fork(), tiada satu pun yang menyediakan secara langsung yang diingini tingkah laku tak segerak. Walau bagaimanapun, terdapat beberapa pendekatan yang boleh mencontohinya.
Menggunakan Proses Latar Belakang dengan '&'**
Jika skrip PHP tidak berkenaan dengan output daripada skrip shell, ia boleh dilaksanakan di latar belakang menggunakan & operator:
exec('path/to/script.sh &');
Arahan ini melaksanakan skrip dalam proses yang berasingan dan serta-merta kembali ke skrip PHP, membenarkannya meneruskan pelaksanaan.
Mengubah hala Output dan Ralat Standard (/dev/null)
Untuk menyekat sepenuhnya output daripada shell skrip, > /dev/null 2>/dev/null & expression boleh dilampirkan pada perintah exec():
exec('path/to/script.sh > /dev/null 2>/dev/null &');
Ini mengubah hala kedua-dua output standard (stdout) dan ralat standard (stderr) ke /dev/null , menyembunyikan output skrip dengan berkesan daripada permintaan PHP.
Pengalihan Alternatif Sintaks
Sintaks alternatif untuk mengubah hala output menggunakan &> /dev/null &:
exec('path/to/script.sh &> /dev/null &');
Ini mempunyai kesan yang sama seperti > /dev/null sintaks tetapi menggabungkan pengalihan dengan latar belakang dalam satu ungkapan.
Dengan melaksanakan teknik ini, skrip PHP boleh melaksanakan skrip shell secara tidak segerak, membenarkan permintaan PHP meneruskan pelaksanaan tanpa menunggu skrip shell untuk lengkap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Perintah Shell Secara Asynchronous dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!