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

您的位置:首頁技術(shù)文章
文章詳情頁

php使用gearman進行任務(wù)分發(fā)操作實例詳解

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

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

一、安裝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是請求的發(fā)起者job是請求的調(diào)度者,用于把客戶的請求分發(fā)到不同的worker上進行工作worker是請求的處理者

比如這里我們要處理client向job發(fā)送一個請求,來計算兩個數(shù)之和,job負(fù)責(zé)調(diào)度worker來具體實現(xiàn)計算兩數(shù)之和。

首先我們編寫client.php

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

再編寫worker.php

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

我們先啟動gearmand服務(wù)

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

運行worker文件

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

再運行client文件

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

結(jié)果如下:

php使用gearman進行任務(wù)分發(fā)操作實例詳解

三、gearman異步的處理任務(wù)

這里我們client向job發(fā)送一個發(fā)送郵件的請求,不等待請求完成,繼續(xù)向下執(zhí)行。

client.php代碼如下:

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

worker.php代碼如下:

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

結(jié)果如下:

php使用gearman進行任務(wù)分發(fā)操作實例詳解

四、gearman并行的執(zhí)行多個任務(wù)

我們?nèi)绾尾⑿械挠嬎銉蓚€數(shù)的累加和? 通過addTask添加多個任務(wù)到隊列,然后進行并行計算。

client.php代碼如下:

<?php//創(chuàng)建一個客戶端$client = new GearmanClient();//添加一個job服務(wù)$client->addServer(’127.0.0.1’, 4730);//設(shè)置任務(wù)完成時的回調(diào)函數(shù)$client->setCompleteCallback(function($task) { //獲取由worker返回的數(shù)據(jù) echo $task->data(), 'n';});//計算1到500的累加和//添加五個任務(wù)到隊列$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)));//運行隊列中的任務(wù),do系列不需要runTask()$client->runTasks();

worker.php代碼如下:

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

我們開啟5個worker工作進程,當(dāng)運行客戶端請求時,5個計算任務(wù)幾乎是同時返回結(jié)果。

結(jié)果如下:

php使用gearman進行任務(wù)分發(fā)操作實例詳解

php使用gearman進行任務(wù)分發(fā)操作實例詳解

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

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

標(biāo)簽: PHP
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
中文字幕日韩欧美精品高清在线| 亚洲国产影院| 蜜臀久久久久久久| 亚洲午夜av| av亚洲免费| 亚洲免费网址| 免费高清在线一区| 日本不卡视频一二三区| 亚洲一级大片| 日韩精品欧美大片| 国产毛片一区二区三区| 国产精品久久| 久久久久久色| 国产精品亚洲产品| 麻豆久久一区| 精品国产免费人成网站| 久久精品中文| 久久午夜影视| 日韩国产一二三区| 美腿丝袜亚洲三区| zzzwww在线看片免费| 久久高清免费| 一区二区国产在线| 国产精品一区三区在线观看| 精品日本视频| 日韩精品永久网址| 亚洲精品91| 五月亚洲婷婷 | 福利在线一区| 欧美黄色网页| 久久亚洲图片| 美腿丝袜亚洲一区| 精品福利久久久| 久久久久久久久99精品大| 先锋亚洲精品| 国产精品99久久免费| 色88888久久久久久影院| 午夜日韩福利| 欧美有码在线| 亚洲精品一级二级| 亚洲精品国产精品粉嫩| 精品国产一区二区三区噜噜噜| 亚洲欧洲高清| 久久亚洲国产精品一区二区| 国产精品丝袜在线播放| 97在线精品| 国产一区导航| 国产女人18毛片水真多18精品| 日韩在线高清| 亚洲久草在线| yellow在线观看网址| 性色一区二区| 精品一区视频| 免费人成在线不卡| 国产一区2区| 蜜臀91精品一区二区三区| 久久不见久久见免费视频7| 激情综合亚洲| 欧美成人精品午夜一区二区| 久久久9色精品国产一区二区三区| 视频一区二区三区在线| 精品三级在线| 久久一二三区| a日韩av网址| 欧美一区在线观看视频| 欧美精品一区二区久久| 国产日韩欧美在线播放不卡| 日韩欧美午夜| 国产精品一区免费在线| 久久高清精品| 久久久久观看| 午夜精品影视国产一区在线麻豆| 成人黄色av| 亚洲精品综合| 欧美日一区二区| 麻豆精品视频在线| 亚洲香蕉视频| 播放一区二区| 国产日韩欧美中文在线| 亚洲一区成人| 成午夜精品一区二区三区软件| 蜜臀av一区二区三区| 97精品国产一区二区三区| 中文字幕一区二区三区日韩精品 | 欧美日韩一区二区三区在线电影| 亚洲高清av| 久久中文字幕导航| 日韩一区二区三区高清在线观看| 久久精品一区二区不卡| 国产精品玖玖玖在线资源| 天堂av在线一区| 99热国内精品| www.com.cn成人| 久久精品国产久精国产| 日韩不卡在线观看日韩不卡视频| 91久久在线| 久久久蜜桃一区二区人| 久久精品国产一区二区| 日韩av成人高清| 亚洲欧美日韩国产| 秋霞影视一区二区三区| 国产精品久久久久久久久久妞妞| 亚洲综合二区| 伊伊综合在线| 精品一区二区三区亚洲| 91成人小视频| 色8久久久久| 视频一区国产视频| 一本一道久久a久久精品蜜桃| 中国字幕a在线看韩国电影| 久久99精品久久久久久园产越南 | 国产精品亚洲四区在线观看| 久久国产福利| 国产亚洲在线| 国产精品外国| 美女网站久久| 亚洲一区二区三区四区电影| 在线视频日韩| 久热re这里精品视频在线6| 国产亚洲毛片| 爽好久久久欧美精品| 黑丝一区二区| 亚洲免费婷婷| 久久av一区二区三区| 蜜桃av一区| 中文字幕日韩高清在线| 亚洲91网站| 亚洲精品麻豆| 亚洲精品系列| 日韩三区四区| 日韩成人精品一区二区三区| 日韩不卡手机在线v区| 日韩av资源网| 欧美一区二区三区免费看| 青青国产精品| 欧美在线黄色| 国产精品亚洲二区| 精品国产精品久久一区免费式| 免费亚洲一区| 国产成年精品| 福利一区和二区| 色在线视频观看| 中文字幕色婷婷在线视频| 日韩福利一区| 婷婷亚洲五月| 中文字幕成人| 欧美亚洲色图校园春色| 国产精品美女在线观看直播| 国产精品xxx| sm捆绑调教国产免费网站在线观看| 日韩欧美一区二区三区在线观看 | 婷婷五月色综合香五月| 91成人精品观看| 欧美极品一区二区三区| 久久久久亚洲精品中文字幕| 日韩欧美精品| 欧美日韩国产高清电影| 在线视频精品| 日韩一区二区三免费高清在线观看 | 日韩精品a在线观看91| 亚洲网址在线观看| 国产日产精品_国产精品毛片 | 久久国产精品免费精品3p | 成人亚洲精品| 亚洲网站视频| 日韩在线网址| 久久精品国产一区二区| 日韩国产网站| 蜜桃视频在线观看一区二区| 国产精品视频一区视频二区| 日韩1区在线| 中文久久精品| 日韩成人午夜精品| 97视频热人人精品免费| 国产亚洲激情| 欧美黑人巨大videos精品| 蜜桃国内精品久久久久软件9| 中文字幕一区二区av| 精品亚洲自拍| 玖玖玖国产精品| 国产精品国产一区| 久久午夜精品| 亚洲欧洲美洲av| 日本视频在线一区| 欧美亚洲国产精品久久| 国产欧美在线| 黄色亚洲精品| 毛片不卡一区二区| 亚洲在线一区| 国产精品99一区二区三区| 首页欧美精品中文字幕| 九九久久国产| 一区二区三区午夜视频| 日韩毛片视频| 日韩一区二区三免费高清在线观看 | 丝袜美腿成人在线| 精品中文字幕一区二区三区四区| 欧美69视频| 国产精品115| 视频一区在线播放|