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