一、簡介
gearman是可以把工作委派到其它機器或流程的工具。
官網位址:http://gearman.org/
Gearman通常由三個部分組成,client+worker+任務伺服器,由worker執行client發送的job,再透過job server回傳給client。 Gearman提供了Client、Worker的API,利用這些API來與job server通訊。
這是工作原理圖:
二、安裝
安裝官方指導在:http://gearman.org/getting-started/
以下介紹在ubuntu的具體安裝流程:
1.在ubuntu14.04,Python-Software-Properties被替換成了Software-Properties-Common.
<code>sudo apt-get install software-properties-common sudo add-apt-repository ppa:gearman-developers/ppa sudo apt-get update </code>
2.安裝GearmanJobServer、Dev Tools、Perform Upgrade
2.安裝GearmanJobServer、Dev Tools、Perform Upgrade .如果沒有PECL,安裝PECL,並使用PECL安裝Gearman(CLI,Client,Worker)<code>sudo apt-get install gearman-job-server libgearman-dev sudo apt-get install gearman-tools sudo apt-get upgrade </code>
<code>sudo apt-get install php-pear sudo apt-get install php5-dev sudo pecl install gearman </code>
extension=gearman.so
<code>sudo vi /etc/php5/cli/php.ini </code>
rl
rr個worker<code><?php print gearman_version() . "\n"; ?> 运行方式:php test.php </code>
。這段程式碼建立一個worker對象,加入預設的server,註冊reverse的回呼函數。程式會進入一個死循環,每當有job進入的時候,回呼函數會執行,這裡只是簡單的把字串反轉,然後回傳。
建一個Client
client類似worker,建立下面的server.php
<code><?php $worker= new GearmanWorker(); $worker->addServer(); $worker->addFunction("reverse", "my_reverse_function"); while ($worker->work()); function my_reverse_function($job){ return strrev($job->workload()); } ?> </code>
看下執行結果:
建一個圖碼
<code><?php $client=new GearmanClient(); $client->addServer(); print $client->do("reverse","Hello World!"); ?> </code>
2、不使用php ,直接用指令列的方式使用gearman 範例
啟動一個終端執行守護程式
<code><?php $worker= new GearmanWorker(); $worker->addServer(); $worker->addFunction("resize", "my_resize_function"); while ($worker->work()); function my_resize_function($job) { $thumb = new Imagick(); $thumb->readImageBlob($job->workload()); if ($thumb->getImageHeight() > 600) $thumb->scaleImage(0, 600); else if ($thumb->getImageWidth() > 800) $thumb->scaleImage(800, 0); return $thumb->getImageBlob(); } ?> </code>
啟動一個worker,這裡呼叫一個啟動一個終端機執行守護程式
<code>sudo wget http://www.imagemagick.org/download/ImageMagick.tar.gz tar -xzvf ImageMagick.tar.gz cd ImageMagick sudo ./configure -prefix=/usr/local/imagemagick -enable-lzw -with-modules && make && make install </code>
<code>gearman -f resize < full.jpg > thumb.jpg </code>
以上就介紹了gearman 入門使用筆記,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。