摘要:是提供一套生產(chǎn)者消費(fèi)者模型,可以方便地將一個(gè)慢速任務(wù)投遞到隊(duì)列,由進(jìn)程池異步地執(zhí)行。功能目前只能在中使用。版本提供了框架,可以基于和實(shí)現(xiàn)一個(gè)程序,在或中直接調(diào)用擴(kuò)展就可以使用的功能了。
AsyncTask是swoole提供一套生產(chǎn)者消費(fèi)者模型,可以方便地將一個(gè)慢速任務(wù)投遞到隊(duì)列,由進(jìn)程池異步地執(zhí)行。task功能目前只能在swoole_server中使用。1.9.0版本提供了RedisServer框架,可以基于RedisServer和Task實(shí)現(xiàn)一個(gè)Server程序,在php-fpm或apache中直接調(diào)用Redis擴(kuò)展就可以使用swoole的task功能了。
創(chuàng)建RedisServerset(array( "task_worker_num" => 32, "worker_num" => 1, )); $server->setHandler("LPUSH", function ($fd, $data) use ($server) { $taskId = $server->task($data); if ($taskId === false) { return Server::format(Server::ERROR); } else { return Server::format(Server::INT, $taskId); } }); $server->on("Finish", function() { }); $server->on("Task", function ($serv, $taskId, $workerId, $data) { //處理任務(wù) }); $server->start();
如果是本機(jī)調(diào)用可以監(jiān)聽UnixSocket,局域網(wǎng)內(nèi)調(diào)用需要使用IP:PORT
Task中$data就是客戶端投遞的數(shù)據(jù)
其他語言也可以使用Redis客戶端投遞任務(wù)
可以根據(jù)Task任務(wù)執(zhí)行的速度調(diào)節(jié)task_worker_num控制啟動(dòng)的進(jìn)程數(shù)量,這些進(jìn)程是由swoole底層負(fù)責(zé)管理的,在發(fā)生致命錯(cuò)誤或進(jìn)程退出后底層會(huì)重新創(chuàng)建新的任務(wù)進(jìn)程
投遞任務(wù)$redis = new Redis; $redis->connect("127.0.0.1", 9501); $taskId = $redis->lpush("myqueue", json_encode(array("hello", "swoole")));
注意這個(gè)RedisServer并不是一臺(tái)真正的Redis服務(wù)器,它只支持LPUSH一個(gè)指令。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/22242.html
摘要:和服務(wù)關(guān)系最密切的進(jìn)程是中的進(jìn)程組,絕大部分業(yè)務(wù)處理都在該進(jìn)程中進(jìn)行。隨后觸發(fā)一個(gè)事件各組件通過該事件進(jìn)行配置文件加載路由注冊(cè)。事件每個(gè)請(qǐng)求到來時(shí)僅僅會(huì)觸發(fā)事件。服務(wù)器生命周期和服務(wù)基本一致,詳情參考源碼剖析功能實(shí)現(xiàn) 作者:bromine鏈接:https://www.jianshu.com/p/4c0...來源:簡(jiǎn)書著作權(quán)歸作者所有,本文已獲得作者授權(quán)轉(zhuǎn)載,并對(duì)原文進(jìn)行了重新的排版。S...
摘要:負(fù)責(zé)解釋執(zhí)行文件生成響應(yīng),最終返回給,展現(xiàn)至前端。相比于傳統(tǒng)架構(gòu),進(jìn)程模型最大的特點(diǎn)在于其多線程模式處理網(wǎng)絡(luò)請(qǐng)求,使得其能輕松應(yīng)對(duì)大量連接。這要求開發(fā)人員對(duì)于多進(jìn)程的運(yùn)行模式有更清晰的認(rèn)識(shí)更容易內(nèi)存泄露。 一、SwooleSwoole號(hào)稱重新定義了PHP,它是一個(gè)PHP擴(kuò)展,使得PHP可以使用異步的方式執(zhí)行,就像node一樣,而且還能使用socket,為PHP提供了一系列異步IO、事件...
摘要:前言最近在研究,原來一直聽別人在說可以加速,一直都是懵逼的。,全稱,中文譯作快速公共網(wǎng)管接口。那么,我們?yōu)槭裁床荒芟裰耙粯?,能夠不重新加載配置文件的,來一個(gè)不用加載這么多的依賴的方式呢當(dāng)然可以啦,這時(shí)候就派上用場(chǎng)了。 前言 最近在研究Swoole,原來一直聽別人在說Swoole可以加速,一直都是懵逼的。在研究了Swoole之后,我有了一些自己的理解。 PHP-CGI 的黑歷史 對(duì)于 ...
摘要:前言最近在研究,原來一直聽別人在說可以加速,一直都是懵逼的。,全稱,中文譯作快速公共網(wǎng)管接口。那么,我們?yōu)槭裁床荒芟裰耙粯?,能夠不重新加載配置文件的,來一個(gè)不用加載這么多的依賴的方式呢當(dāng)然可以啦,這時(shí)候就派上用場(chǎng)了。 前言 最近在研究Swoole,原來一直聽別人在說Swoole可以加速,一直都是懵逼的。在研究了Swoole之后,我有了一些自己的理解。 PHP-CGI 的黑歷史 對(duì)于 ...
閱讀 2275·2023-04-25 14:56
閱讀 2772·2021-11-16 11:44
閱讀 2806·2021-09-22 15:00
閱讀 1966·2019-08-29 16:55
閱讀 2247·2019-08-29 14:04
閱讀 2398·2019-08-29 11:23
閱讀 3746·2019-08-26 10:46
閱讀 1980·2019-08-22 18:43