新聞中心
本篇內(nèi)容主要講解“php_swoole對(duì)進(jìn)程的基本操作”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“php_swoole對(duì)進(jìn)程的基本操作”吧!
創(chuàng)新互聯(lián)建站是一家專注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷策劃、小程序制作、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動(dòng)互聯(lián)開發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立十載以來(lái),已經(jīng)為數(shù)千家宴會(huì)酒店設(shè)計(jì)各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)。現(xiàn)在,服務(wù)的數(shù)千家客戶與我們一路同行,見(jiàn)證我們的成長(zhǎng);未來(lái),我們一起分享成功的喜悅。
在以往的開發(fā)項(xiàng)目中,要操作進(jìn)程就會(huì)使用PHP自帶的pcntl拓展。但是pcntl存在著許多的不足:
pcntl沒(méi)有提供進(jìn)程間通信的功能
pcntl不支持重定向標(biāo)準(zhǔn)輸入和輸出
pcntl只提供了fork這樣原始的接口,容易使用錯(cuò)誤
這邊我們使用swoole進(jìn)程管理模塊,用來(lái)替代PHP
的pcntl
;
場(chǎng)景:日常任務(wù)中,有時(shí)需要通過(guò)php腳本執(zhí)行一些日志分析,隊(duì)列處理等任務(wù),當(dāng)數(shù)據(jù)量比較大時(shí),可以使用多進(jìn)程來(lái)處理。
準(zhǔn)備:安裝PHP_swoole拓展;
write($data)
向管道內(nèi)寫入數(shù)據(jù)。$data
的長(zhǎng)度在Linux
系統(tǒng)下最大不超過(guò)8K
,MacOS/FreeBSD
下最大不超過(guò)2K
start():
執(zhí)行fork調(diào)用,啟動(dòng)子進(jìn)程。
/** 創(chuàng)建子進(jìn)程,將數(shù)據(jù)寫入管道,然后啟動(dòng)子進(jìn)程 */ $process = new \swoole_process([$this, 'sonProcessWork']); $process->write(json_encode($data_pop)); $pid = $process->start();
swoole_event_add(): 將一個(gè)socket加入到底層的reactor
事件監(jiān)聽中;在子進(jìn)程中處理一些耗時(shí)的計(jì)算或者操作;
/** 獲取管道的業(yè)務(wù)數(shù)據(jù),進(jìn)行相關(guān)的操作 */ public function sonProcessWork(\swoole_process $worker){ $GLOBALS['worker'] = $worker; swoole_event_add($worker->pipe, function($pipe) { /******start*你的業(yè)務(wù)邏輯 *******/ ..... /******end*你的業(yè)務(wù)邏輯 *******/ $worker->exit(0); }) }
wait(false)
回收結(jié)束運(yùn)行的子進(jìn)程
/** 根據(jù)信號(hào)處理紫禁城 */ private function sig_handler($signo) { Process::signal(SIGCHLD, function($sig) { //必須為false,非阻塞模式 while($ret = Process::wait(false)) { echo "PID={$ret['pid']}\n"; } }); }
到此,相信大家對(duì)“php_swoole對(duì)進(jìn)程的基本操作”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
當(dāng)前題目:php_swoole對(duì)進(jìn)程的基本操作
URL網(wǎng)址:http://www.dlmjj.cn/article/jhohcp.html