pcntl函數(shù)

pcntl_fork():" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運(yùn)營 > php多進(jìn)程編程詳解

php多進(jìn)程編程詳解

時(shí)間:2023-05-26 16:18:02 | 來源:網(wǎng)站運(yùn)營

時(shí)間:2023-05-26 16:18:02 來源:網(wǎng)站運(yùn)營

php多進(jìn)程編程詳解:PHP的進(jìn)程控制支持實(shí)現(xiàn)了Unix方式的進(jìn)程創(chuàng)建, 程序執(zhí)行, 信號(hào)處理以及進(jìn)程的中斷。 進(jìn)程控制不能被應(yīng)用在Web服務(wù)器環(huán)境,當(dāng)其被用于Web服務(wù)環(huán)境時(shí)可能會(huì)帶來意外的結(jié)果。

pcntl函數(shù)

<?php$pid = pcntl_fork();//父進(jìn)程和子進(jìn)程都會(huì)執(zhí)行下面代碼if ($pid == -1) { //錯(cuò)誤處理:創(chuàng)建子進(jìn)程失敗時(shí)返回-1. die('could not fork');} else if ($pid) { //父進(jìn)程會(huì)得到子進(jìn)程號(hào),所以這里是父進(jìn)程執(zhí)行的邏輯 pcntl_wait($status); //等待子進(jìn)程中斷,防止子進(jìn)程成為僵尸進(jìn)程。} else { //子進(jìn)程得到的$pid為0, 所以這里是子進(jìn)程執(zhí)行的邏輯。 exit();//子進(jìn)程執(zhí)行完后應(yīng)該退出,不然會(huì)繼續(xù)執(zhí)行后面的邏輯}<?php echo "主進(jìn)程/n"; $pid = pcntl_fork(); //父進(jìn)程和子進(jìn)程都會(huì)執(zhí)行這些代碼 if($pid == -1 ){ //創(chuàng)建子進(jìn)程失敗會(huì)返回-1 throw new Exception ('fork error on Task object'); }else if($pid){ //創(chuàng)建成功會(huì)父進(jìn)程會(huì)得到子進(jìn)程的pid echo "等待子進(jìn)程執(zhí)行"; pcntl_wait($status);//等待子進(jìn)程中斷 echo "子進(jìn)程執(zhí)行狀態(tài):"; echo "是否正常退出:",pcntl_wifexited($status),"/n"; echo "子進(jìn)程返回的代碼:",pcntl_wexitstatus($status),"/n";//僅在pcntl_wifexited返回true時(shí)生效,只能是int,輸出123 echo "子進(jìn)程是否是由于某個(gè)未捕獲的信號(hào)退出的:",pcntl_wifsignaled($status),"/n";//如果是kill -9|-15 殺死的進(jìn)程返回true echo "導(dǎo)致子進(jìn)程中斷的信號(hào):",pcntl_wtermsig($status),"/n"; 輸出 9 | 15 var_dump($status); }else{ //創(chuàng)建成功子進(jìn)程會(huì)得到pid=0 sleep(2); echo "子進(jìn)程執(zhí)行完畢/n"; exit(123) }<?php echo "設(shè)置3秒之后發(fā)送鬧鐘信號(hào)/n";pcntl_alarm(3); function dealSigalarm(){ echo "收到信號(hào) SIGALRM /n退出程序。。。/n"; exit();} echo "安裝信號(hào)處理器/n";pcntl_signal(SIGALRM,"dealSigalarm");//對(duì)于不能被阻塞、處理和忽略的信號(hào),php為這些事件注冊(cè)信號(hào)處理函數(shù)會(huì)產(chǎn)生一個(gè)致命錯(cuò)誤 SIGSTOP,SIGKILLvar_dump(pcntl_signal_get_handler(SIGUSR1));//輸出dealSigalarmpcntl_signal(SIGUSR1,function(){ echo "收到用戶自定義信號(hào)/n";});$i = 1;while(1){ sleep(1); echo $i++,"/n"; echo "分發(fā)... /n"; pcntl_signal_dispatch();};<?php /** * php進(jìn)程的優(yōu)先級(jí) */ for($i = 1;$i<=5;$i++){ $pid = pcntl_fork(); if($pid == -1){ throw new Exception("fork error on task object"); }else if ($pid){ pcntl_wait($status); }else{ $end_time = time()+3; $k = 0; while(time()<=$end_time){ $k++; } $pid = getmypid(); echo "當(dāng)前進(jìn)程id:".$pid,"優(yōu)先級(jí):",pcntl_getpriority($pid); pcntl_setpriority($i); echo "修改之后的優(yōu)先級(jí)為:",pcntl_getpriority(),"/n"; echo "執(zhí)行了進(jìn)程{$i} {$k}次/r/n"; exit(); } }以上內(nèi)容希望幫助到大家,很多PHPer在進(jìn)階的時(shí)候總會(huì)遇到一些問題和瓶頸,業(yè)務(wù)代碼寫多了沒有方向感,不知道該從那里入手去提升,對(duì)此我整理了一些資料,包括但不限于:分布式架構(gòu)、高可擴(kuò)展、高性能、高并發(fā)、服務(wù)器性能調(diào)優(yōu)、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優(yōu)化、shell腳本、Docker、微服務(wù)、Nginx等多個(gè)知識(shí)點(diǎn)高級(jí)進(jìn)階干貨需要的可以免費(fèi)分享給大家,需要

或 者關(guān)注咱們下面的本站專欄

關(guān)鍵詞:進(jìn)程

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉