백엔드 개발 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" ;    ?>
로그인 후 복사
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" ;    ?>
로그인 후 복사


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

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

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

PHP PCNTL의 포크 실패에 대한 일반적인 오류 및 해결 방법 PHP PCNTL의 포크 실패에 대한 일반적인 오류 및 해결 방법 Feb 28, 2024 am 11:06 AM

PHPPCNTL의 포크 실패에 대한 일반적인 오류 및 해결 방법 프로세스 관리를 위해 PHPPCNTL 확장을 사용할 때 포크 실패 문제가 자주 발생합니다. Fork는 자식 프로세스를 생성하는 방법으로, 일부 오류로 인해 Fork 작업이 실패하는 경우가 있습니다. 이 기사에서는 몇 가지 일반적인 포크 실패 오류와 해당 솔루션을 소개하고 독자가 이러한 문제를 더 잘 이해하고 처리하는 데 도움이 되는 특정 코드 예제를 제공합니다. 1. 메모리 부족으로 인해 발생할 수 있는 오류 메시지:

PHP PCNTL 확장 포크 기능 실패 원인 분석 PHP PCNTL 확장 포크 기능 실패 원인 분석 Feb 28, 2024 pm 09:42 PM

PHPPCNTL 확장 포크 기능 실패 원인 분석 PHP에서 PCNTL 확장은 프로세스 제어를 처리하기 위한 일련의 기능을 제공하며, 그 중 포크 기능은 일반적으로 사용되는 기능 중 하나입니다. 포크 기능을 통해 특정 작업을 수행하는 하위 프로세스를 생성할 수 있는데, 이는 동시 처리 프로그램을 작성할 때 매우 유용합니다. 하지만 PCNTL 확장 포크 기능을 사용할 때 포크 오류가 발생하는 경우가 있습니다. 이 글에서는 이러한 상황의 원인을 분석하고 구체적인 코드를 제공합니다.

Java에서 프로세스를 사용하는 방법 Java에서 프로세스를 사용하는 방법 May 10, 2023 am 11:04 AM

참고 1. Process 클래스는 프로세스(즉, 프로그램 실행)를 캡슐화하는 추상 클래스(모든 메소드는 추상임)입니다. 2. Process 클래스는 프로세스로부터 입력을 받고, 프로세스에 출력을 실행하고, 프로세스가 완료되기를 기다리고, 프로세스의 종료 상태를 확인하고, 프로세스를 소멸시키는 메소드를 제공합니다. 예 Processp=null;try{p=Runtime.getRuntime().exec("notepad.exe");p.waitFor();}catch(Exceptione){e.printStackTrace();}System.out.println(" 프린트하고싶다...

PHP PCNTL의 포크 기능 실패에 대한 디버깅 기술 공유 PHP PCNTL의 포크 기능 실패에 대한 디버깅 기술 공유 Feb 28, 2024 pm 05:21 PM

PHPPCNTL의 유효하지 않은 포크 기능에 대한 디버깅 기술 공유 PHP 프로그래밍에서 PCNTL 확장은 새로운 프로세스를 생성하는 데 사용할 수 있는 포크 기능과 같은 일부 프로세스 제어 기능을 제공합니다. 하지만 사용 중 가끔 Fork 기능이 실패하여 자식 프로세스가 정상적으로 생성되지 못하는 경우가 있습니다. 이 문서에서는 이 문제를 해결하는 데 도움이 되는 몇 가지 디버깅 팁을 공유합니다. 먼저 간단한 예부터 시작하겠습니다. 다음과 같은 PHP 코드가 있다고 가정해 보겠습니다.

PHP PCNTL에서 포크 실패 문제를 해결하는 방법 PHP PCNTL에서 포크 실패 문제를 해결하는 방법 Feb 28, 2024 pm 06:03 PM

죄송합니다. PHPPCNTL의 포크 실패 문제를 해결하는 방법에 대한 기사를 제공할 수 없습니다. 다른 질문이 있거나 도움이 필요하시면 언제든지 알려주시기 바랍니다. 내가 당신을 위해 무엇을 할 수 있는지 알려주세요!

PHP PCNTL 포크 실패로 인한 프로그램 예외 및 해결 방법 PHP PCNTL 포크 실패로 인한 프로그램 예외 및 해결 방법 Feb 28, 2024 am 11:39 AM

PHPPCNTL은 프로세스 제어 관련 기능을 처리하기 위해 PHP에서 제공하는 확장 라이브러리입니다. PHP 다중 프로세스 프로그램을 작성할 때 PCNTL 라이브러리는 하위 프로세스를 만들고, 프로세스 간 통신하고, 프로세스 상태를 관리하는 데 도움이 될 수 있습니다. 그러나 PCNTL 라이브러리를 사용하다 보면 가끔 포크 실패로 인해 프로그램 예외가 발생하는 상황이 발생할 수 있습니다. 이 문서에서는 문제를 자세히 조사하고 특정 코드 예제와 함께 수정 사항을 제공합니다. 오류 현상 PHPPCNTL 라이브러리를 사용하여 하위 프로세스를 생성할 때

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

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

See all articles