client.phpphp
<?php $client= new GearmanClient(); $client->addServer("127.0.0.1", 4730); print $client->do("title", "Linvo"); print "/n"; ?>
worker.php前端
<?php $worker= new GearmanWorker(); $worker->addServer("127.0.0.1", 4730); $worker->addFunction("title", "title_function"); while (true){ $worker->work(); if ($this->worker->returnCode() != GEARMAN_SUCCESS) { //Gearman 狀態錯誤 須要作日誌或異常處理 } } function title_function($job) { $str = $job->workload(); return strlen($str); } ?>
準備工做已經完畢,試驗開始
一、啓動job
gearmand -d
二、啓動worker
php -c /etc/php5/apache2/php.ini worker.php
三、啓動client(新開終端中打開)
php -c /etc/php5/apache2/php.ini client.php
屏幕顯示字符串的長度 「5」
這裏,有幾點須要說明一下:
一、這裏直接用php cli方式運行,添加-c參數是爲了加載php.ini配置文件,以加載gearman擴展
二、worker應該作成守護進程(CLI模式),能夠開啓多個,這樣client發起的任務就會分發到各個worker分別來執行(自動負載均衡 )
這個例子因爲太過簡單,即便開啓多個worker也沒法看出效果,不過能夠經過終止其中一個,能夠看出系統自動切換到其餘worker繼續正常執行
三、同理,client也是能夠開啓多個的(模型請參考以前的那邊日誌)apache
四、同時,job也能夠開啓多個,以免單點故障vim