亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

php如何實現非阻塞任務?

php如何實現非阻塞任務?

PHP
慕姐4208626 2019-02-19 21:16:33
問題描述我只是想單純的用php實現非阻塞任務$worker -> do(function(){    //...io耗時任務...}) -> then(function($result){    //任務完成后的通知回調});有什么好的方式呢? 執行任務的時候不能阻塞。其實下面的幾種都沒問題,swoole reactPHP workerman等均能實現下面的處理邏輯$worker -> request('http://....') -> then(function($result){    //任務完成后的通知回調}); $worker -> query('select * from .....') -> then(function($result){    //任務完成后的通知回調}); $worker -> getFile('./test.txt') -> then(function($result){    //任務完成后的通知回調});但是下面這種卻無法實現。$worker -> do(function(){     request('http://...');     query('select * ....');     getFile('./test.txt');     reject(...); //error     resolve(...); //success}) -> then(function($result){    //任務完成后的通知回調});一些同行推薦了下面的鏈接作為參考https://github.com/hprose/hpr...http://nikic.github.io/2012/1...https://github.com/reactphp我想實現的是do里面是function,function里面是一些任務,仔細想了下應該是無法實現這個操作的,因為異步任務的話,上下文關系已經變了,不知道我的理解是否正確?
查看完整描述

2 回答

?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

PHP本身是順序執行的,沒有異步回調的用法,也沒有你說的非阻塞用法。

如果是基于CLI的應用,可以嘗試使用swoole來實現。swoole是PHP的一個擴展實現了異步非阻塞的操作。


查看完整回答
反對 回復 2019-02-19
?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

默認情況下 是單線程 的 實現不了
重新編譯一下開啟多線程模式 這個能夠實現。

查看完整回答
反對 回復 2019-02-19
  • 2 回答
  • 0 關注
  • 549 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號