摘要:思路很簡單開一個子進程處理異步事務,處理完之后,通過管道告訴父進程,并將返回數(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
摘要:本文使用與完成一個的進程池,并且支持動態(tài)創(chuàng)建新進程。接著遍歷所有的進程,并且加入中,設置可讀事件,用于接收子進程的空閑信號。最后每隔一秒向進程投遞任務。由于只模擬了十次任務,則第十個任務完成之后在父進程中發(fā)送使所有子進程退出。 swoole_process 主要是用來代替 PHP 的 pcntl 擴展。我們知道 pcntl 是用來進行多進程編程的,而 pcntl 只提供了 fork 這...
摘要:實現(xiàn)異步的方式有哪些提供了一些異步方法那它們底層是用哪種方式實現(xiàn)的呢實現(xiàn)異步的方式有線程方式進程方式復用線程方式和進程方式類似有異步請求時開一個線程或者進程獲取到數(shù)據(jù)后線程間可以直接共享數(shù)據(jù)進程間可以通過進程通信機制,如共享內(nèi)存管道等方式進 實現(xiàn)異步的方式有哪些? swoole提供了一些異步方法, 那它們底層是用哪種方式實現(xiàn)的呢? 實現(xiàn)異步的方式有: 線程方式 進程方式 IO復用 ...
摘要:消息隊列更常見的用途是主進程分配任務,子進程消費執(zhí)行。子進程前面加了個,這是為了防止父進程還未往消息隊列中加入內(nèi)容直接退出。 前面幾節(jié)都是講解pcntl擴展實現(xiàn)的多進程程序。本節(jié)給大家介紹swoole擴展的swoole_process模塊。 swoole多進程 swoole_process 是swoole提供的進程管理模塊,用來替代PHP的pcntl擴展。 首先,確保安裝的swoole...
摘要:清空主進程殘留的定時器與信號。設定為執(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 只...
閱讀 866·2021-10-11 10:59
閱讀 2802·2019-08-30 15:43
閱讀 2134·2019-08-30 11:08
閱讀 1656·2019-08-29 15:20
閱讀 1011·2019-08-29 13:53
閱讀 490·2019-08-26 13:24
閱讀 1638·2019-08-26 13:24
閱讀 2825·2019-08-26 12:08