日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

php使用gearman進行任務分發操作實例詳解

瀏覽:184日期:2022-09-11 13:38:12

本文實例講述了php使用gearman進行任務分發操作。分享給大家供大家參考,具體如下:

一、安裝gearman

下載gearman源碼包

https://launchpad.net/gearmand/+download

如: gearmand-1.1.12.tar.gz

下載php的gearman擴展包

http://pecl.php.net/package/gearman

如: gearman-1.1.2.tgz

安裝gearman

> yum install boost-devel gperf libevent-devel libuuid-devel> tar xf gearmand-1.1.12.tar.gz> cd gearmand-1.1.12> ./configure> make && make install

安裝gearman的php擴展(建議php版本不要過高,因為php7的gearman擴展目前還沒有出來)

> yum install autoconf> tar xf gearman-1.1.2.tgz> cd gearman-1.1.2> /data/php56/bin/phpize> ./configure --with-php-config=/data/php56/bin/php-config> make && make install

修改php.ini

> vi /data/php56/lib/php.ini

添加如下兩項

extension_dir=/data/php56/lib/php/extensions/no-debug-zts-20131226/extension=gearman.so

查看擴展

> /data/php56/bin/php -m

二、簡單的使用gearman

gearman中請求的處理過程一般涉及三種角色:client->job->worker其中client是請求的發起者job是請求的調度者,用于把客戶的請求分發到不同的worker上進行工作worker是請求的處理者

比如這里我們要處理client向job發送一個請求,來計算兩個數之和,job負責調度worker來具體實現計算兩數之和。

首先我們編寫client.php

<?php//創建一個客戶端$client = new GearmanClient();//添加一個job服務$client->addServer(’127.0.0.1’, 4730);//doNormal是同步的,等待worker處理完成返回結果//建議不要使用do()了$ret = $client->doNormal(’sum’, serialize(array(10, 10)));if($ret) { echo ’計算結果:’, $ret, 'n';}

再編寫worker.php

<?php//創建一個worker$worker = new GearmanWorker();//添加一個job服務$worker->addServer(’127.0.0.1’, 4730);//注冊一個回調函數,用于業務處理$worker->addFunction(’sum’, function($job) { //workload()獲取客戶端發送來的序列化數據 $data = unserialize($job->workload()); return $data[0] + $data[1];});//死循環while(true) { //等待job提交的任務 $ret = $worker->work(); if ($worker->returnCode() != GEARMAN_SUCCESS) { break; }}

我們先啟動gearmand服務

> mkdir -p /usr/local/var/log> gearmand -d

運行worker文件

> /data/php56/bin/php /data/worker.php

再運行client文件

> /data/php56/bin/php /data/client.php

結果如下:

php使用gearman進行任務分發操作實例詳解

三、gearman異步的處理任務

這里我們client向job發送一個發送郵件的請求,不等待請求完成,繼續向下執行。

client.php代碼如下:

<?php//創建一個客戶端$client = new GearmanClient();//添加一個job服務$client->addServer(’127.0.0.1’, 4730);//doBackground異步,返回提交任務的句柄$ret = $client->doBackground(’sendEmail’, json_encode(array( ’email’ => ’test@qq.com’, ’title’ => ’測試異步’, ’body’ => ’異步執行好牛B的樣子’,)));//繼續執行下面的代碼echo '我的內心毫無波動,甚至還想笑n';do { sleep(1); //獲取任務句柄的狀態 //jobStatus返回的是一個數組 //第一個,表示工作是否已經知道 //第二個,工作是否在運行 //第三和第四,分別對應完成百分比的分子與分母 $status = $client->jobStatus($ret); echo '完成情況:{$status[2]}/{$status[3]}n'; if(!$status[1]) { break; }} while(true);

worker.php代碼如下:

<?php//創建一個worker$worker = new GearmanWorker();//添加一個job服務$worker->addServer(’127.0.0.1’, 4730);//注冊一個回調函數,用于業務處理$worker->addFunction(’sendEmail’, function($job) { //workload()獲取客戶端發送來的序列化數據 $data = json_decode($job->workload(), true); //模擬發送郵件所用時間 sleep(6); echo '發送{$data[’email’]}郵件成功n';});//死循環//等待job提交的任務while($worker->work());

結果如下:

php使用gearman進行任務分發操作實例詳解

四、gearman并行的執行多個任務

我們如何并行的計算兩個數的累加和? 通過addTask添加多個任務到隊列,然后進行并行計算。

client.php代碼如下:

<?php//創建一個客戶端$client = new GearmanClient();//添加一個job服務$client->addServer(’127.0.0.1’, 4730);//設置任務完成時的回調函數$client->setCompleteCallback(function($task) { //獲取由worker返回的數據 echo $task->data(), 'n';});//計算1到500的累加和//添加五個任務到隊列$client->addTask(’sum’, json_encode(array(1, 100)));$client->addTask(’sum’, json_encode(array(100, 200)));$client->addTask(’sum’, json_encode(array(200, 300)));$client->addTask(’sum’, json_encode(array(300, 400)));$client->addTask(’sum’, json_encode(array(400, 500)));//運行隊列中的任務,do系列不需要runTask()$client->runTasks();

worker.php代碼如下:

<?php//創建一個worker$worker = new GearmanWorker();//添加一個job服務$worker->addServer(’127.0.0.1’, 4730);//注冊一個回調函數,用于業務處理$worker->addFunction(’sum’, function($job) { //workload()獲取客戶端發送來的序列化數據 $data = json_decode($job->workload(), true); sleep(1); $sum = 0; for($ix = $data[0]; $ix < $data[1]; ++$ix) { $sum += $ix; } return $sum;});//死循環//等待job提交的任務while($worker->work());

我們開啟5個worker工作進程,當運行客戶端請求時,5個計算任務幾乎是同時返回結果。

結果如下:

php使用gearman進行任務分發操作實例詳解

php使用gearman進行任務分發操作實例詳解

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP進程與線程操作技巧總結》、《PHP網絡編程技巧總結》、《PHP基本語法入門教程》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久婷婷av| 国产精品极品在线观看| 国产一区丝袜| 欧美国产亚洲精品| 久久av免费| 国产精品久久久久久久免费软件| 国产精品高颜值在线观看| 国产欧美日韩视频在线| 欧美三级第一页| 国产麻豆一区二区三区| 国产午夜久久av| 丝袜美腿一区二区三区| 国产亚洲永久域名| 蘑菇福利视频一区播放| 亚洲视频国产| 亚洲精品进入| 欧美一级网站| 国产精品hd| 日韩国产在线不卡视频| 精品一区二区三区在线观看视频| 视频在线观看91| 国产精品尤物| 久久精品国产一区二区| 久久99久久久精品欧美| 麻豆精品蜜桃视频网站| 精品成av人一区二区三区| 国产精品欧美三级在线观看 | 国产麻豆一区二区三区| 国产精品大片| 日韩欧美三级| 丝袜美腿亚洲色图| 国产精品免费精品自在线观看| 免费在线亚洲欧美| 欧美aa在线观看| 视频精品一区二区| 国产精品第一国产精品| 水蜜桃久久夜色精品一区| 亚洲精品极品少妇16p| 日韩欧美美女在线观看| 精品72久久久久中文字幕| 亚洲高清激情| 亚洲精品免费观看| 国产欧美三级| 精品亚洲自拍| 久久婷婷一区| 日韩精品一级| 欧美成人aaa| 精品久久久网| 久久久精品午夜少妇| 婷婷综合在线| 亚洲精品三级| 国产日韩精品视频一区二区三区| 国产精品一区免费在线| 成人在线免费观看91| 久久久久久久久久久妇女| 国产亚洲一级| 国产日产精品_国产精品毛片| 精品久久久久久久| 久久人人88| 亚洲ab电影| 久久午夜影院| 日韩欧美综合| 热三久草你在线| 午夜亚洲福利在线老司机| 日韩黄色在线观看| 久久97久久97精品免视看秋霞| 97精品国产一区二区三区| 婷婷亚洲综合| 国产欧美午夜| 久久久精品日韩| 亚洲免费一区二区| 国产欧美一级| 亚洲福利专区| 久久狠狠久久| 成人久久久久| 日韩精品视频中文字幕| 国产成人精品福利| 99热精品在线观看| 91成人在线精品视频| 成人日韩在线| 日本成人在线不卡视频| 色一区二区三区四区| 亚洲欧美日韩综合国产aⅴ| 成人在线免费观看网站| 视频一区二区欧美| 国产精品永久| japanese国产精品| 91精品国产自产在线丝袜啪| 欧洲一级精品| 欧美一区免费| 99精品电影| 日本亚洲视频| 高清av一区| 日韩三级精品| 97国产精品| 日韩av资源网| 婷婷综合六月| 久久福利在线| 久久福利一区| 91欧美国产| 久久国产婷婷国产香蕉| 国产99亚洲| 日韩伦理在线一区| 日韩福利在线观看| 午夜精品亚洲| 成人午夜网址| 日本精品一区二区三区在线观看视频| 国产一区二区三区精品在线观看| 久久不射中文字幕| 日韩国产一区| 日韩高清一区二区| 99久久久久| 麻豆精品99| 中文精品电影| 久久久人人人| 日韩av网站在线免费观看| 亚洲精品极品少妇16p| 狠狠久久伊人中文字幕| 91精品国产自产精品男人的天堂| 99视频精品| 激情婷婷欧美| 九九精品调教| 美女在线视频一区| 久久一区欧美| 国产亚洲精品美女久久久久久久久久| 羞羞答答国产精品www一本| 麻豆网站免费在线观看| 国产精品片aa在线观看| 免费视频一区二区| 欧美肉体xxxx裸体137大胆| 国产成人精品亚洲线观看| 国产日韩欧美一区二区三区| 影音先锋久久精品| 午夜宅男久久久| 亚洲国产一区二区在线观看| 成人国产精品一区二区网站| 国产乱码精品| 日韩精品欧美精品| 国产亚洲亚洲| 精品一区亚洲| 999精品在线| 亚洲美女久久精品| 国产精品久久久久久久久妇女| 国产精久久一区二区| 青青国产精品| 日本vs亚洲vs韩国一区三区二区| 一本综合精品| 视频一区在线播放| 日本a级不卡| 日本vs亚洲vs韩国一区三区二区| 亚洲久草在线| 日韩午夜视频在线| 日本不卡视频一二三区| 亚洲香蕉久久| 一区二区三区四区日韩| 在线精品视频一区| 国产日韩专区| 亚洲一区二区三区高清| 婷婷六月综合| 日韩三级精品| 国产精品最新自拍| 色偷偷色偷偷色偷偷在线视频| 在线观看精品| 日本欧美在线看| 日韩国产欧美三级| 欧美日本精品| 精品日本视频| 黄毛片在线观看| 精品免费av在线| 日本精品在线中文字幕| 国产精品99一区二区| 精品国模一区二区三区| 亚洲视频www| 日韩区一区二| 欧美精品中文| 精品色999| av亚洲一区二区三区| 尤物在线精品| 日韩欧美三区| 国产一区二区三区网| 超碰在线99| 亚洲在线观看| 欧美日本不卡| 成人福利av| 亚洲欧美视频一区二区三区| 香蕉久久久久久| 欧美片第1页综合| 激情久久99| 欧美手机在线| 亚洲精品三级| 国模精品一区| 亚洲激情不卡| 日韩av网站免费在线| 欧美a一区二区| 久久免费高清| 亚洲精品第一| 91超碰国产精品| 国产精品丝袜在线播放| 99久久视频| 欧美片网站免费|