国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

利用swoole_process和eventloop實現(xiàn)php異步編程

Code4App / 3354人閱讀

摘要:思路很簡單開一個子進程處理異步事務,處理完之后,通過管道告訴父進程,并將返回數(shù)據(jù)寫入管道代碼如下可以看到運行結果是在前面證明是異步執(zhí)行的其實通過中的和也可以實現(xiàn)不需要借助但是提供的確實很好用

思路很簡單:

開一個子進程處理異步事務,處理完之后,通過管道告訴父進程,并將返回數(shù)據(jù)寫入管道

代碼如下:

AsynHttpClient.php

url = $url;
        $this->callback = $callback;
        $this->run();
    }

    public function run()
    {
        $this->process = new swoole_process([$this, "callback"], true); 
        $this->process->start();
        swoole_event_add($this->process->pipe, function($pipe) {
            $content = $this->process->read();
            call_user_func($this->callback, $content);
            swoole_event_del($this->process->pipe);
        });
    }

    public function callback(swoole_process $process)
    {
        $ch = curl_init($this->url);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        $content = curl_exec($ch);

        curl_close($ch);
        
        $process->write($content);
    }
}

index.php

require "AsynHttpClient.php";

new AsynHttpClient("http://127.0.0.1:9000/api.php", function($data) {
   print_r($data);
});

echo 1;

api.php

 "ok",
  "data" => "hello",
]);
php -S 127.0.0.1:9000

可以看到運行結果是1在前面, 證明是異步執(zhí)行的.

其實通過php中的pcntl_fork和libevent也可以實現(xiàn), 不需要借助swoole, 但是swoole提供的process確實很好用

https://www.iwantmoney.cn/art...

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

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/22259.html

相關文章

  • 使用 swoole_process 實現(xiàn) PHP 進程池

    摘要:本文使用與完成一個的進程池,并且支持動態(tài)創(chuàng)建新進程。接著遍歷所有的進程,并且加入中,設置可讀事件,用于接收子進程的空閑信號。最后每隔一秒向進程投遞任務。由于只模擬了十次任務,則第十個任務完成之后在父進程中發(fā)送使所有子進程退出。 swoole_process 主要是用來代替 PHP 的 pcntl 擴展。我們知道 pcntl 是用來進行多進程編程的,而 pcntl 只提供了 fork 這...

    Andrman 評論0 收藏0
  • PHP異步編程異步的本質(zhì)

    摘要:實現(xiàn)異步的方式有哪些提供了一些異步方法那它們底層是用哪種方式實現(xiàn)的呢實現(xiàn)異步的方式有線程方式進程方式復用線程方式和進程方式類似有異步請求時開一個線程或者進程獲取到數(shù)據(jù)后線程間可以直接共享數(shù)據(jù)進程間可以通過進程通信機制,如共享內(nèi)存管道等方式進 實現(xiàn)異步的方式有哪些? swoole提供了一些異步方法, 那它們底層是用哪種方式實現(xiàn)的呢? 實現(xiàn)異步的方式有: 線程方式 進程方式 IO復用 ...

    lushan 評論0 收藏0
  • PHP多進程系列筆記(五)

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

    qianfeng 評論0 收藏0
  • Swoole 源碼分析——進程管理 Swoole_Process

    摘要:清空主進程殘留的定時器與信號。設定為執(zhí)行回調(diào)函數(shù)如果在回調(diào)函數(shù)中調(diào)用了異步系統(tǒng),啟動函數(shù)進行事件循環(huán)。因此為了區(qū)分兩者,規(guī)定并不允許兩者同時存在。 前言 swoole-1.7.2 增加了一個進程管理模塊,用來替代 PHP 的 pcntl 擴展。 PHP自帶的pcntl,存在很多不足,如 pcntl 沒有提供進程間通信的功能 pcntl 不支持重定向標準輸入和輸出 pcntl 只...

    pepperwang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<