Untuk memulakan dan menghentikan proses dalam PHP, anda boleh menggunakan fungsi kawalan proses sistem (Process Control Functions). Dalam artikel ini, kita akan membincangkan cara menggunakan fungsi ini untuk mengawal proses, termasuk memulakan, menghentikan dan menunggu proses tamat.
1. Mulakan proses
Untuk memulakan proses dalam PHP, anda boleh menggunakan fungsi pcntl_fork(), yang mencipta proses baharu, iaitu salinan proses asal. Proses asal dan proses baharu dijalankan pada masa yang sama, dan cawangan bersyarat dilaksanakan dalam kod menggunakan pernyataan if Cawangan ini boleh digunakan untuk menentukan kod yang harus dilaksanakan dalam proses asal atau proses baharu.
Berikut ialah kod sampel:
$pid = pcntl_fork(); if ($pid == -1) { // 进程创建失败 die('Could not fork.'); } else if ($pid) { // 父进程 echo "Parent process, child PID is $pid "; } else { // 子进程 echo "Child process "; exit; }
Dalam contoh di atas, jika fungsi pcntl_fork() mengembalikan -1, ini bermakna penciptaan proses gagal dan program akan keluar. Jika tidak, jika pid ialah 0, ini bermakna proses semasa ialah proses anak, dan proses anak akan melaksanakan kod cawangan dan keluar. Jika pid bukan 0, ini bermakna proses semasa ialah proses induk, dan proses induk akan melaksanakan kod cawangan ini.
2. Hentikan proses
Untuk menghentikan proses PHP, kita boleh menggunakan fungsi pcntl_signal() dan posix_kill(). Fungsi ini membolehkan kami menghantar isyarat (SIGTERM atau SIGKILL) kepada proses, dengan itu menghentikan proses daripada berjalan. Isyarat SIGTERM boleh menyebabkan proses ditamatkan dengan anggun, manakala isyarat SIGKILL akan menamatkan proses secara paksa dan tidak akan membersihkan sebelum proses tamat.
Berikut ialah contoh kod:
// 停止进程 posix_kill($pid, SIGTERM); // 优雅地停止进程 // posix_kill($pid, SIGKILL); // 强制停止进程
Sudah tentu, di sini kita perlu memastikan $pid ialah ID proses yang betul bagi proses yang perlu dibunuh.
3. Tunggu proses tamat
Apabila memulakan proses anak, proses ibu bapa biasanya mahu menunggu proses anak selesai kerjanya. Oleh itu, kita perlu menggunakan fungsi pcntl_waitpid(). Fungsi ini menunggu proses dengan PID yang ditentukan untuk keluar Jika proses telah keluar, fungsi akan kembali serta-merta.
Berikut ialah kod sampel:
// 等待进程结束 $child_pid = pcntl_waitpid($pid, $status); // 检查进程是否成功退出 if (pcntl_wifexited($status)) { echo "子进程 $child_pid 成功退出,并返回状态码: " . pcntl_wexitstatus($status) . " "; }
Dalam contoh di atas, apabila proses anak ditamatkan, pcntl_waitpid() akan menyimpan PID dan status penamatan proses anak dalam pembolehubah $status . Selepas itu, fungsi pcntl_wifexited() akan menyemak sama ada proses berjaya keluar dan mengembalikan nilai Boolean, dan fungsi pcntl_wexitstatus() akan mengembalikan status keluar proses.
Ringkasan
Dalam artikel ini, kami memperkenalkan cara menggunakan fungsi kawalan proses dalam PHP untuk memulakan, menghentikan dan menunggu proses. Fungsi ini boleh membantu kami mengurus pemprosesan serentak dengan lebih baik dan menjadikan program PHP kami lebih cekap dan berkuasa. Pada masa yang sama, sila ambil perhatian bahawa anda harus berhati-hati dan mengikuti amalan terbaik keselamatan apabila menggunakan sambungan PCNTL.
Atas ialah kandungan terperinci Bagaimana untuk memulakan dan menghentikan proses dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!