2012-10-03 67 views
0

我想檢查這個概念以及每個人對它的看法。我想使用Gearman在後臺運行幾項任務(主要是數據收集和處理)。Gearman Worker with REST API

我想設置一個PHP框架的Gearman(在我的情況下,它是CakePHP2)。就我所瞭解的Gearman而言,工作人員只是一個運行單個php腳本(即worker.php)的PHP守護進程。

我想弄清楚如何將我已經在PHP框架中構建的邏輯/代碼引入到單個工作者腳本中。否則我發現我可能不得不重建像模型一樣的全部東西。

所以我的解決方案是保持worker.php的亮度,而不是讓worker腳本通過CURL啓動REST API調用。這聽起來像是一個很好的選擇嗎?

回答

1

使捲曲通話聽起來有點開銷來我..我第一次探討以下內容:

  • 裝入框架中的工人的一部分(價格比撥打電話&然後調用框架)
  • 成爲「回撥」的特殊工作者。例如,真正的工作人員會做真正的工作,並在完成時將結果提交給「回調」隊列。那個回調工人就會接受Gearman的工作,並從那裏拿走它們(就像REST API端點會從那裏拿走它一樣)。

以任何方式,除非您在機器之間分割工作,否則創建額外的HTTP調用不是一個好主意。爲什麼要涉及Apache,如果你可以直接使用PHP?

+0

謝謝,我沒有考慮過從事cURL調用。 – MechaStorm

0

我將此添加爲答案,但答覆太短。

我已經能夠做到的Gearman工人作爲一個CakePHP的控制檯,它環繞一個supervisord配置

// Add the example configs below 
[program:my-gearman-test] 
command= /path/to/cakephp/app/Console/cake gearman test 
process_name= %(process_num)g-gearman-test 
numprocs=1 
directory=/path/to/cakephp/app 
autostart=true 
autorestart=true 
user=www-data 
stdout_logfile=/path/to/logs/worker_stdout.log 
stdout_logfile_maxbytes=1MB 
stderr_logfile=/path/to/logs/worker_stderr.log 
stderr_logfile_maxbytes=1MB 

然後我跑supervisord,它將啓動初始化蛋糕控制檯命令。現在CakePHP框架的工人部分,我得到了使用框架而不是獨立的worker.php腳本的所有優點