亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

PHP的Pcntl多進(jìn)程擴(kuò)展基礎(chǔ)使用

AprilJ / 2504人閱讀

摘要:提供了一個(gè)擴(kuò)展,基于的進(jìn)程,系統(tǒng)暫時(shí)沒(méi)有這個(gè)擴(kuò)展,用于實(shí)現(xiàn)基礎(chǔ)的多進(jìn)程實(shí)現(xiàn),可以利用這個(gè)處理一個(gè)很耗時(shí)的任務(wù),例如發(fā)訂閱郵件,短信,站內(nèi)信等。如果父進(jìn)程不關(guān)心子進(jìn)程什么時(shí)候結(jié)束子進(jìn)程結(jié)束后,內(nèi)核會(huì)回收。

PHP提供了一個(gè)Pcntl擴(kuò)展,Pcntl基于Linux的進(jìn)程,Windows系統(tǒng)暫時(shí)沒(méi)有這個(gè)擴(kuò)展,用于實(shí)現(xiàn)基礎(chǔ)的多進(jìn)程實(shí)現(xiàn),可以利用這個(gè)處理一個(gè)很耗時(shí)的任務(wù),例如發(fā)訂閱郵件,短信,站內(nèi)信等。

參考鏈接:

http://php.net/manual/zh/ref....

http://php.net/manual/zh/ref....

http://blog.csdn.net/huyanpin...

http://rango.swoole.com/archi...

https://www.lvtao.net/dev/php...

示例代碼:

代碼是基于Laravel 框架的,建議使用此框架來(lái)允許這部分代碼。

public function index(Request $request)

    {

        pcntl_signal(SIGCHLD, SIG_IGN); //如果父進(jìn)程不關(guān)心子進(jìn)程什么時(shí)候結(jié)束,子進(jìn)程結(jié)束后,內(nèi)核會(huì)回收。  

        $max = 8000;

        $workers = 10;

        

        $pids = array();

        for($i = 0; $i < $workers; $i++){

            $pids[$i] = pcntl_fork();

            $pid = posix_getpid();

            switch ($pids[$i]) {

                case -1:

                    echo "fork error : {$i} 
";

                    exit;

                case 0:

                    $param = array(

                        "lastid" => $max / $workers * $i,

                        "maxid" => $max / $workers * ($i+1),

                    );

                    $this->doSomething($pid, $param);

                    exit;

                default:

                    break;

            }

        }

        

        foreach ($pids as $i => $pid) {

            if($pid) {

                //父進(jìn)程會(huì)得到子進(jìn)程號(hào),所以這里是父進(jìn)程執(zhí)行的邏輯  

                //如果不需要阻塞進(jìn)程,而又想得到子進(jìn)程的退出狀態(tài),則可以注釋掉pcntl_wait($status)語(yǔ)句,或?qū)懗桑? 

                pcntl_wait($status,WNOHANG); //等待子進(jìn)程中斷,防止子進(jìn)程成為僵尸進(jìn)程。

                //pcntl_waitpid($pid, $status);

            }

        }

    }



// 可以看到那個(gè)子進(jìn)程在處理哪些數(shù)據(jù)

    public function doSomething($filename, $param)

    {

        for ($i = $param["lastid"]; $i < $param["maxid"]; $i++) {

            $path = "./test/";

            if (!is_dir($path)){

                mkdir($path, 0777, true);

            }

            $content = $i . "|";

            $file = $path . $filename . ".txt";

            file_put_contents($file, $content, FILE_APPEND);

        }

    }

更多建議讀文檔,進(jìn)程和線程,還有很多內(nèi)容的,需要讀書(shū)去學(xué)習(xí)了

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/30165.html

相關(guān)文章

  • PHP進(jìn)程系列筆記(五)

    摘要:消息隊(duì)列更常見(jiàn)的用途是主進(jìn)程分配任務(wù),子進(jìn)程消費(fèi)執(zhí)行。子進(jìn)程前面加了個(gè),這是為了防止父進(jìn)程還未往消息隊(duì)列中加入內(nèi)容直接退出。 前面幾節(jié)都是講解pcntl擴(kuò)展實(shí)現(xiàn)的多進(jìn)程程序。本節(jié)給大家介紹swoole擴(kuò)展的swoole_process模塊。 swoole多進(jìn)程 swoole_process 是swoole提供的進(jìn)程管理模塊,用來(lái)替代PHP的pcntl擴(kuò)展。 首先,確保安裝的swoole...

    qianfeng 評(píng)論0 收藏0
  • 基于PCNTl擴(kuò)展PHP進(jìn)程管理庫(kù)

    摘要:子進(jìn)程得到的為所以這里是子進(jìn)程執(zhí)行的邏輯。最后再次附上項(xiàng)目地址歡迎 大多數(shù)人都說(shuō)php是單進(jìn)程執(zhí)行的,其實(shí)這是不準(zhǔn)確的,在cli模式下php是可以做到多進(jìn)程的;不過(guò)需要pcntl的擴(kuò)展; $pid = pcntl_fork(); //父進(jìn)程和子進(jìn)程都會(huì)執(zhí)行下面代碼 if ($pid == -1) { //錯(cuò)誤處理:創(chuàng)建子進(jìn)程失敗時(shí)返回-1. die(could not...

    王巖威 評(píng)論0 收藏0
  • PHP進(jìn)程編程

    摘要:輸出結(jié)果子進(jìn)程回收阻塞方式剛剛有么一般我習(xí)慣用加上命令來(lái)查找運(yùn)行著的后臺(tái)進(jìn)程。還有一種方法,既可以回收已經(jīng)結(jié)束的子進(jìn)程,又可以并行。但是這個(gè)時(shí)候,子進(jìn)程會(huì)被交給號(hào)進(jìn)程,號(hào)進(jìn)程成為了這些子進(jìn)程的繼父。 使用多進(jìn)程的優(yōu)點(diǎn): 1. 使用多進(jìn)程, 子進(jìn)程結(jié)束以后, 內(nèi)核會(huì)負(fù)責(zé)回收資源 2. 使用多進(jìn)程,子進(jìn)程異常退出不會(huì)導(dǎo)致整個(gè)進(jìn)程Thread退出. 父進(jìn)程還有機(jī)會(huì)重建流程. ...

    lieeps 評(píng)論0 收藏0
  • multi-process-pcntl 基于PCNTLPHP并發(fā)處理 封裝類

    摘要:職場(chǎng)多年下來(lái),技術(shù)也算是逐漸地有些積累,但是更重要的是對(duì)自身有了更加合理的人生定位?;蛟S,人生的意義,就在于此處的感悟吧。基于的并發(fā)處理封裝類。對(duì)語(yǔ)言底層擴(kuò)展的的深度解讀和生產(chǎn)應(yīng)用。函數(shù)官網(wǎng)手冊(cè)中對(duì)的說(shuō)明,更細(xì)化的需求可以研究深化。 個(gè)人聲明 作者:于立(wx/yulichenr) 敬告:聯(lián)系我,請(qǐng)注明來(lái)源和來(lái)意 本人開(kāi)發(fā)有很多年了,但是很少整理分享,如今趁著清閑就為大家服務(wù)了,希...

    awokezhou 評(píng)論0 收藏0
  • PHP進(jìn)程系列筆記(一)

    摘要:用于創(chuàng)建子進(jìn)程。該函數(shù)阻塞當(dāng)前進(jìn)程,只到當(dāng)前進(jìn)程的一個(gè)子進(jìn)程退出或者收到一個(gè)結(jié)束當(dāng)前進(jìn)程的信號(hào)。注意處需要注意子進(jìn)程需要防止子進(jìn)程也進(jìn)入循環(huán)。如果沒(méi)有,最終創(chuàng)建的子進(jìn)程不只個(gè)。 本系列文章將向大家講解pcntl_*系列函數(shù),從而更深入的理解進(jìn)程相關(guān)知識(shí)。 PCNTL在PHP中進(jìn)程控制支持默認(rèn)是關(guān)閉的。您需要使用 --enable-pcntl 配置選項(xiàng)重新編譯PHP的 CGI或CLI版本...

    ddongjian0000 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<