Maison développement back-end tutoriel php php 多进程中的信号有关问题

php 多进程中的信号有关问题

Jun 13, 2016 am 11:33 AM
pcntl process quot

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" ;    ?>
Copier après la connexion
2.原因:sleep过程中被子进程返回的信号中断。

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" ;    ?>
Copier après la connexion


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

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

Erreurs courantes et solutions en cas d'échec du fork dans PHP PCNTL Erreurs courantes et solutions en cas d'échec du fork dans PHP PCNTL Feb 28, 2024 am 11:06 AM

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 étendue de PHP PCNTL a échoué Analyse des raisons pour lesquelles la fonction fork étendue de PHP PCNTL a échoué Feb 28, 2024 pm 09:42 PM

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.

Comment utiliser le processus en Java Comment utiliser le processus en Java May 10, 2023 am 11:04 AM

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 de compétences de débogage en cas d'échec de la fonction fork dans PHP PCNTL Partage de compétences de débogage en cas d'échec de la fonction fork dans PHP PCNTL Feb 28, 2024 pm 05:21 PM

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 :

Exceptions de programme causées par l'échec du fork PHP PCNTL et comment les corriger Exceptions de programme causées par l'échec du fork PHP PCNTL et comment les corriger Feb 28, 2024 am 11:39 AM

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

Comment résoudre le problème de l'échec du fork dans PHP PCNTL Comment résoudre le problème de l'échec du fork dans PHP PCNTL Feb 28, 2024 pm 06:03 PM

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 !

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 Jun 13, 2016 am 10:15 AM

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

See all articles