国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - gearman中任務的優先級和返回狀態實例分析

gearman中任務的優先級和返回狀態實例分析

2021-09-30 13:37懷素真 PHP教程

這篇文章主要介紹了gearman中任務的優先級和返回狀態,結合實例形式分析了gearman任務的優先級以及獲取返回狀態相關操作技巧,需要的朋友可以參考下

本文實例講述了gearman中任務的優先級和返回狀態。分享給大家供大家參考,具體如下:

gearman中任務的優先級和返回狀態

一、任務的優先級

同步阻塞調用,等待返回結果

  1. doLow:最低優先
  2. doNomal:正常優先級
  3. doHigh:最優先執行

異步派發任務,不等待返回結果,返回任務句柄,通過該句柄可獲取任務運行狀態信息

  1. doLowBackground
  2. doBackground
  3. doHighBackground

注意Task和doXXX區別,Task是一組job,派發后會分配到多個worker上并行執行并返回結果給調用方。
而doXXX的每個任務只會在一個worker上執行。

  1. addTaskLow
  2. addTask
  3. addTaskHigh
  4.  
  5. addTaskLowBackground
  6. addTaskBackground
  7. addTaskHighBackground

cli.php代碼如下:

  1. <?php
  2. $client = new GearmanClient();
  3. $client->addServer('127.0.0.1', 4730);
  4. $client->setCompleteCallback(function($task) {
  5. echo $task->data(), PHP_EOL;
  6. });
  7. //分別添加不同優先級的Task
  8. $client->addTaskLow('sum', json_encode(array(100, 100)));
  9. $client->addTask('sum', json_encode(array(200, 200)));
  10. $client->addTaskHigh('sum', json_encode(array(300, 300)));
  11.  
  12. $client->runTasks();

worker.php代碼如下:

  1. <?php
  2. $worker = new GearmanWorker();
  3. $worker->addServer('127.0.0.1', 4730);
  4. $worker->addFunction('sum', function($job) {
  5. $data = json_decode($job->workload(), true);
  6. $ret = $data[0] + $data[1];
  7. echo $ret, PHP_EOL;
  8. sleep(1);
  9. return $ret;
  10. });
  11. while($worker->work());

注意,為了實驗效果,這里worker只需啟動一個。

gearman中任務的優先級和返回狀態實例分析

二、獲取任務的狀態

cli.php代碼如下:

  1. <?php
  2. $client = new GearmanClient();
  3. $client->addServer('127.0.0.1', 4730);
  4. //任務排隊時的回調
  5. $client->setCreatedCallback('reverse_create');
  6. //有任務數據包時的回調
  7. $client->setDataCallback('reverse_data');
  8. //收集任務狀態的回調
  9. $client->setStatusCallback('reverse_status');
  10. //任務完成時的回調
  11. $client->setCompleteCallback('reverse_complete');
  12. //任務失敗時的回調
  13. $client->setFailCallback('reverse_fail');
  14. //分別添加不同優先級的Task
  15. $client->addTaskLow('reverse', '1234567');
  16. $client->addTask('reverse', 'hello');
  17. $client->addTaskHigh('reverse', 'world');
  18.  
  19. $client->runTasks();
  20.  
  21. function reverse_create($task) {
  22. echo '任務創建(', $task->jobHandle() , '): ', PHP_EOL;
  23. }
  24. function reverse_data($task) {
  25. echo '接收數據(', $task->jobHandle() , '): ', $task->data(), PHP_EOL;
  26. }
  27. function reverse_status($task) {
  28. //taskNumerator()獲取任務完成情況的分子
  29. //taskDenominator()獲取任務完成情況的分母
  30. echo '完成情況(', $task->jobHandle() , '): ', $task->taskNumerator(), '/', $task->taskDenominator(), PHP_EOL;
  31. }
  32. function reverse_complete($task) {
  33. echo '任務完成(', $task->jobHandle() , '): ', $task->data(), PHP_EOL;
  34. }
  35. function reverse_fail($task) {
  36. echo '任務失敗(', $task->jobHandle() , '): ', PHP_EOL;
  37. }

worker.php代碼如下:

  1. <?php
  2. $worker = new GearmanWorker();
  3. $worker->addServer('127.0.0.1', 4730);
  4. $worker->addFunction('reverse', function($job) {
  5. //workload()返回接收的數據
  6. $data = $job->workload();
  7. //workloadSize()返回接收數據的字節大小
  8. $dataSize = $job->workloadSize();
  9. echo "worker: {$data} ({$dataSize}) \n";
  10.  
  11. $tmp = 0;
  12. $mid = $dataSize / 2;
  13. for($ix = 0; $ix < $mid; ++$ix) {
  14. $tmp = $data[$ix];
  15. $data[$ix] = $data[$dataSize - $ix - 1];
  16. $data[$dataSize - $ix - 1] = $tmp;
  17.  
  18. //這里發送狀態,會被client設置的回調reverse_status()接收到
  19. //狀態完成情況的分子與分母
  20. $job->sendStatus($ix + 1, $mid + 1);
  21. //發送數據,被reverse_data()接收到
  22. $job->sendData($data);
  23. sleep(1);
  24. }
  25. return $data;
  26. });
  27. while($worker->work());

運行結果如下:

gearman中任務的優先級和返回狀態實例分析

gearman中任務的優先級和返回狀態實例分析

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

原文鏈接:https://www.cnblogs.com/jkko123/p/6537522.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 最新国产视频 | 国产午夜视频在线观看 | 91电影在线 | 色视频在线免费观看 | 久久久av| 亚洲精品久久久久久久久久久 | 国产精品美乳一区二区免费 | 一区二区视频在线 | 久色网 | 欧美日韩第一页 | 最新中文字幕视频 | 国产成人亚洲精品 | 亚洲精品一区 | 婷婷久久综合 | 午夜影院免费观看视频 | 久久久久久高清 | 欧美成人免费在线 | 亚洲一区久久 | 黄色在线免费看 | 欧美二区三区 | 狠狠干天天草 | 亚洲欧美成人 | 欧美一区二区三区在线看 | www.午夜| 一级录像免费录像在线观看 | 国产精品久久久久久久 | 91国在线产 | 天天干天天操 | 成人妇女免费播放久久久 | 一区视频在线播放 | 日韩a电影 | 久热在线视频 | 欧美电影网站 | 欧美激情在线精品一区二区三区 | 久久久精品综合 | 91国自产精品中文字幕亚洲 | 久久精品伊人 | 91 在线| 成人午夜视频网 | 欧美日韩综合 | 成人午夜视频在线观看 |