Dengan perkembangan pesat Internet, kerumitan dan beban aplikasi web juga semakin meningkat. Dalam konteks ini, cara mengendalikan sebilangan besar permintaan dengan berkesan telah menjadi masalah yang perlu dihadapi oleh setiap pembangun web. Teknologi pengaturcaraan berbilang proses PHP adalah cara penting untuk menyelesaikan masalah kesesakan program Web.
Idea pengaturcaraan berbilang proses adalah untuk menggunakan keupayaan berbilang tugas sistem pengendalian moden untuk menjalankan berbilang proses pada masa yang sama untuk meningkatkan penggunaan CPU. Di bawah model satu utas atau proses tunggal tradisional, pelayan web akan memproses setiap permintaan dalam susunan tertentu Apabila bilangan permintaan meningkat ke tahap tertentu, pelayan akan disekat atau bertindak balas dengan perlahan. Teknologi pengaturcaraan berbilang proses boleh menyerahkan setiap permintaan kepada proses bebas untuk pemprosesan, dengan itu meningkatkan keupayaan pemprosesan serentak pelayan.
Dalam PHP, biasanya terdapat dua cara untuk melaksanakan pengaturcaraan berbilang proses: menggunakan sambungan PCNTL dan menggunakan panggilan sistem Fork. Pelaksanaan dan aplikasi khusus kedua-dua kaedah ini diperkenalkan di bawah.
Gunakan sambungan PCNTL untuk melaksanakan pengaturcaraan berbilang proses PHP
PCNTL ialah perpustakaan sambungan PHP yang menyediakan sokongan untuk penciptaan proses, pemusnahan, pengurusan dan operasi lain. Dengan menggunakan sambungan PCNTL, kami boleh mencipta berbilang sub-proses dalam skrip PHP, dengan itu membolehkan multitasking. Kod contoh PCNTL ringkas diberikan di bawah:
<?php $child_processes = array(); for ($i = 0; $i < 10; $i++) { $pid = pcntl_fork(); if ($pid == -1) { echo "创建子进程失败"; exit(1); } else if ($pid == 0) { // 子进程代码 echo "子进程 {$i} 执行中... "; sleep(10); exit(0); } else { $child_processes[$pid] = true; } } while (!empty($child_processes)) { $pid = pcntl_wait($status, WNOHANG); if ($pid > 0) { unset($child_processes[$pid]); } } echo "所有子进程已退出 ";
Kod di atas mencipta sepuluh sub-proses dan membuat setiap sub-proses menunggu selama 10 saat sebelum keluar. Dalam proses utama, kami menunggu untuk keluar dari semua proses anak dengan memanggil fungsi pcntl_wait(). Parameter WNOHANG menunjukkan menunggu tanpa menyekat, iaitu, jika tiada proses anak keluar, ia akan kembali serta-merta.
Gunakan panggilan sistem Fork untuk melaksanakan pengaturcaraan berbilang proses PHP
Selain sambungan PCNTL, kami juga boleh menggunakan panggilan sistem Fork untuk melaksanakan pengaturcaraan berbilang proses PHP. Panggilan sistem Fork ialah kaedah yang disediakan oleh sistem pengendalian untuk mencipta proses anak dalam proses semasa. Prototaip fungsi panggilan sistem Fork adalah seperti berikut:
#include <unistd.h> pid_t fork(void);
Antaranya, fungsi fork() akan mencipta proses baharu dalam proses semasa dan mengembalikan nombor proses. Nilai pulangan 0 menunjukkan bahawa ini ialah proses anak, di mana kita boleh melaksanakan kod tertentu, nilai pulangan lebih besar daripada 0 menunjukkan bahawa ini ialah proses induk dan kita boleh menggunakan nilai pulangan untuk mengurus proses anak.
Berikut ialah contoh kod yang menggunakan panggilan sistem Fork untuk melaksanakan pengaturcaraan berbilang proses PHP:
<?php $child_processes = array(); for ($i = 0; $i < 10; $i++) { $pid = pcntl_fork(); if ($pid == -1) { echo "创建子进程失败"; exit(1); } else if ($pid == 0) { // 子进程代码 echo "子进程 {$i} 执行中... "; sleep(10); exit(0); } else { $child_processes[$pid] = true; } } while (!empty($child_processes)) { $pid = pcntl_wait($status, WNOHANG); if ($pid > 0) { unset($child_processes[$pid]); } } echo "所有子进程已退出 ";
Kod di atas pada asasnya sama dengan kod sampel PCNTL, kecuali Fork panggilan sistem digunakan dalam kod proses kanak-kanak, untuk mencipta proses anak baharu.
Senario dan Langkah Berjaga-jaga Aplikasi
Menggunakan teknologi pengaturcaraan berbilang proses PHP boleh meningkatkan keupayaan pemprosesan serentak pelayan web, dengan itu meningkatkan daya pemprosesan dan prestasi program. Senario aplikasi biasa termasuk:
Perlu diambil perhatian bahawa apabila menggunakan pengaturcaraan berbilang proses, anda harus memberi perhatian kepada isu berikut:
Ringkasnya, teknologi pengaturcaraan pelbagai proses PHP ialah cara penting untuk meningkatkan keupayaan pemprosesan serentak pelayan web. Dengan menggunakan sambungan PCNTL atau panggilan sistem Fork, kami boleh mencapai multitasking dengan mudah. Dalam aplikasi praktikal, adalah perlu untuk memberi perhatian kepada isu seperti persaingan sumber dan pengurusan proses dalam pengaturcaraan pelbagai proses untuk memastikan operasi normal program.
Atas ialah kandungan terperinci Pelaksanaan dan aplikasi pengaturcaraan pelbagai proses PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!