Gearman Job Worker for PHP

最近同事接觸到需要 worker 來處理一些非同步的事情。諸如訂單、寄發 email 都常用非同步來執行,以往這些事情大多都用排程解決,其實還有更好的 solution。他們使用 Gearman 來解決這個問題。好奇心的驅使,就算不是我實作的我也想去玩玩看新的東西,Gearman 可以在系統裡起一個 Job Worker 也可以算是 service,這個 job worker 可以在不起一個排程的情況底下,幫你寄信、處理訂單。也就是當你有需要使用 email 在呼叫他就好了。

安裝 Gearman

在 CentOS 中可以直接用 yum 安裝

yum install -y gearmand

安裝 Gearman 依賴包

yum -y install re2c geoip geoip-data geoip-devel gcc* boost* libgearman*

這兩個步驟都很簡單

安裝 PHP 的 Gearman extension

wget http://pecl.php.net/get/gearman-1.1.1.tgz
cd gearman-1.1.1
phpize
./configure

最後在 php.ini 加上 module

儲存後重新啟動

這樣 php 就支援 gearman 囉

Hello World

不免俗的一定要測試一下的,這邊我就利用官網提供的程式碼做測試。

首先建立一隻 worker.php

再建立一隻 client.php

然後執行 worker

再執行 client 就可以得到 Hello World 了

若要停止這個 job worker 可以用 Ctrl + C

這東西還蠻強大的,之前試用過 Beanstalk 覺得 Gearman 相對強大許多。

Dec 22nd, 2013 4:40:00pm

Last updated

Was this helpful?