鍍金池/ 問答/Java  PHP  網(wǎng)絡(luò)安全/ 請問swoole的異步任務(wù)實(shí)現(xiàn)過程

請問swoole的異步任務(wù)實(shí)現(xiàn)過程

想用swoole代替redis實(shí)現(xiàn)異步任務(wù)隊(duì)列。
根據(jù)官方文檔描述,swoole_client的異步非阻塞模式只有cli模式。
那么我們的程序代碼怎么利用它去投遞異步任務(wù)呢?
我的php是在fpm下的,比如一個(gè)場景是,用戶登錄后,我想發(fā)個(gè)短信給它的郵件地址。想把這個(gè)任務(wù)交給swoole異步處理,然后登錄程序能直接返回登錄成功,不要被這個(gè)短信請求給阻塞。

首先我知道要開一個(gè)server來處理任務(wù)。那么投遞任務(wù)的swoole_client調(diào)用這塊,從我的登錄代碼里開始怎么嵌入swoole的執(zhí)行流程呢?
看到網(wǎng)上有一些所謂的實(shí)例講解,但是都沒有明確說具體的調(diào)用實(shí)現(xiàn)過程... 感到不解
多謝!

回答
編輯回答
魚梓

1.開一個(gè)server來處理任務(wù),綁定Task和Finish事件,server監(jiān)聽某個(gè)投遞任務(wù)的消息
2.php-fpm/apache環(huán)境下只能使用同步客戶端,向server發(fā)送個(gè)投遞任務(wù)消息,server收到后投遞任務(wù)
3.在server的Task事件中處理任務(wù),任務(wù)處理完后觸發(fā)Finish事件,做一些任務(wù)完成后的操作。

可以參考LaravelS對于任務(wù)的隊(duì)列的封裝方式:異步的任務(wù)隊(duì)列

2017年2月21日 12:59