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" ; ?>

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

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

Erreurs courantes et solutions en cas d'échec de fork dans PHPPCNTL Lorsque vous utilisez l'extension PHPPCNTL pour la gestion des processus, vous rencontrez souvent le problème de l'échec de fork. Fork est une méthode de création d'un processus enfant. Dans certains cas, l'opération fork peut échouer en raison de certaines erreurs. Cet article présentera quelques erreurs courantes de défaillance de fork et les solutions correspondantes, et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre et gérer ces problèmes. 1. Message d'erreur possible en cas de mémoire insuffisante : Can

Analyse des raisons pour lesquelles la fonction fork de l'extension PHPPCNTL échoue. En PHP, l'extension PCNTL fournit une série de fonctions pour gérer le contrôle des processus, parmi lesquelles la fonction fork est l'une des fonctions couramment utilisées. Grâce à la fonction fork, nous pouvons créer un processus enfant pour effectuer une certaine tâche, ce qui est très utile lors de l'écriture de gestionnaires concurrents. Cependant, lors de l'utilisation de la fonction de fork étendu PCNTL, le fork échoue parfois. Cet article analysera les raisons de cette situation et donnera des codes spécifiques.

Remarque 1. La classe Process est une classe abstraite (toutes les méthodes sont abstraites), encapsulant le processus (c'est-à-dire exécutant le programme). 2. La classe Process fournit des méthodes pour saisir à partir du processus, exécuter la sortie du processus, attendre la fin du processus, vérifier l'état de sortie du processus et détruire le processus. Exemple Processp=null;try{p=Runtime.getRuntime().exec("notepad.exe");p.waitFor();}catch(Exceptione){e.printStackTrace();}System.out.println(" Je veux être imprimé...

Partage des compétences de débogage pour une fonction fork invalide dans PHPPCNTL Dans la programmation PHP, l'extension PCNTL fournit certaines fonctions de contrôle de processus, telles que la fonction fork, qui peuvent être utilisées pour créer un nouveau processus. Cependant, pendant l'utilisation, il arrive parfois que la fonction fork échoue, ce qui entraîne l'échec de la création normale du processus enfant. Cet article partagera quelques conseils de débogage pour nous aider à résoudre ce problème. Commençons par un exemple simple. Disons que nous avons le code PHP suivant :

PHPPCNTL est une bibliothèque d'extension fournie par PHP pour gérer les fonctions liées au contrôle de processus. Lors de l'écriture de programmes PHP multi-processus, la bibliothèque PCNTL peut nous aider à créer des sous-processus, à communiquer entre les processus et à gérer l'état du processus. Cependant, lorsque vous utilisez la bibliothèque PCNTL, vous rencontrez parfois une situation dans laquelle une défaillance de fork provoque des exceptions de programme. Cet article approfondira le problème et fournira un correctif, ainsi que des exemples de code spécifiques. Phénomène d'erreur Lors de l'utilisation de la bibliothèque PHPPCNTL pour créer un processus enfant, nous

Désolé, je ne peux pas fournir d'article sur la façon de résoudre le problème de l'échec du fork dans PHPPCNTL. Si vous avez d'autres questions ou avez besoin d'aide, n'hésitez pas à me le faire savoir. Faites-moi savoir ce que je peux faire pour vous !

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