php 多进程中的信号有关问题
php 多进程中的信号问题
1.以下代码sleep时间远小于20
<?php // 当子进程退出时,会触发该函数function sig_handler($sig) { switch($sig) { case SIGCHLD: echo 'SIGCHLD received'."n"; }} pcntl_signal(SIGCHLD, "sig_handler");// 注册子进程退出时调用的函数$start = time(); $sub_process_cnt = 20;for($i=0;$i<$sub_process_cnt;$i++) { sleep(1); $pid = pcntl_fork(); if ($pid == 0) { exit(-1); }}$status = 0; for ($k=0; $k<$sub_process_cnt; $k++) { pcntl_waitpid(-1, $status );}$end = time();$usage = $end - $start;print "End, use: ".$usage." seconds" ; ?>
3.解决办法:
pcntl_signal(SIGCHLD, SIG_IGN ); //忽略子进程返回信号
全部代码如下
<?php // 当子进程退出时,会触发该函数function sig_handler($sig) { switch($sig) { case SIGCHLD: echo 'SIGCHLD received'."n"; }} pcntl_signal(SIGCHLD, SIG_IGN );// 注册子进程退出时调用的函数$start = time(); $sub_process_cnt = 20;for($i=0;$i<$sub_process_cnt;$i++) { sleep(1); $pid = pcntl_fork(); if ($pid == 0) { exit(-1); }}$status = 0; for ($k=0; $k<$sub_process_cnt; $k++) { pcntl_waitpid(-1, $status );}$end = time();$usage = $end - $start;print "End, use: ".$usage." seconds" ; ?>

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Ralat dan penyelesaian biasa untuk kegagalan garpu dalam PHPPCNTL Apabila menggunakan sambungan PHPPCNTL untuk pengurusan proses, anda sering menghadapi masalah kegagalan garpu. Fork ialah kaedah mencipta proses anak Dalam sesetengah kes, operasi garpu mungkin gagal disebabkan oleh beberapa ralat. Artikel ini akan memperkenalkan beberapa ralat kegagalan garpu biasa dan penyelesaian yang sepadan, dan memberikan contoh kod khusus untuk membantu pembaca memahami dan menangani masalah ini dengan lebih baik. 1. Mesej ralat yang mungkin untuk ingatan tidak mencukupi: Boleh

Analisis sebab fungsi fork sambungan PHPPCNTL gagal Dalam PHP, sambungan PCNTL menyediakan satu siri fungsi untuk mengendalikan kawalan proses, antaranya fungsi fork adalah salah satu fungsi yang biasa digunakan. Melalui fungsi garpu, kita boleh mencipta proses kanak-kanak untuk melaksanakan tugas tertentu, yang sangat berguna apabila menulis pengendali serentak. Walau bagaimanapun, apabila menggunakan fungsi garpu lanjutan PCNTL, kadangkala garpu gagal Artikel ini akan menganalisis sebab untuk situasi ini dan memberikan kod tertentu.

Nota 1. Kelas Proses ialah kelas abstrak (semua kaedah adalah abstrak) dan merangkum proses (iaitu, atur cara pelaksanaan). 2. Kelas Proses menyediakan kaedah untuk memasukkan daripada proses, melaksanakan output kepada proses, menunggu proses selesai, menyemak status keluar proses dan memusnahkan proses. Contoh Processp=null;try{p=Runtime.getRuntime().exec("notepad.exe");p.waitFor();}catch(Exceptione){e.printStackTrace();}System.out.println(" Saya mahu dicetak...

Berkongsi kemahiran nyahpepijat untuk fungsi garpu tidak sah dalam PHPPCNTL Dalam pengaturcaraan PHP, sambungan PCNTL menyediakan beberapa fungsi kawalan proses, seperti fungsi garpu, yang boleh digunakan untuk mencipta proses baharu. Walau bagaimanapun, semasa penggunaan, kadangkala fungsi garpu gagal, menyebabkan proses anak gagal dibuat secara normal. Artikel ini akan berkongsi beberapa petua penyahpepijatan untuk membantu kami menyelesaikan masalah ini. Mula-mula, mari kita mulakan dengan contoh mudah. Katakan kita mempunyai kod PHP berikut:

PHPPCNTL ialah perpustakaan sambungan yang disediakan oleh PHP untuk mengendalikan fungsi berkaitan kawalan proses. Apabila menulis program berbilang proses PHP, pustaka PCNTL boleh membantu kami membuat sub-proses, berkomunikasi antara proses dan mengurus status proses. Walau bagaimanapun, apabila menggunakan perpustakaan PCNTL, kadangkala anda menghadapi situasi di mana kegagalan garpu menyebabkan pengecualian program. Artikel ini akan menyelidiki isu ini dan memberikan pembetulan, bersama-sama dengan contoh kod tertentu. Fenomena ralat Apabila menggunakan perpustakaan PHPPCNTL untuk mencipta proses kanak-kanak, kami

Maaf, saya tidak dapat menyediakan artikel tentang cara menyelesaikan masalah kegagalan garpu dalam PHPPCNTL. Jika anda mempunyai sebarang soalan lain atau memerlukan bantuan, sila beritahu saya. Beritahu saya apa yang boleh saya lakukan untuk anda!

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没问题。
