标签:
client.php
<?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); } ?>
准备工作已经完毕,试验开始
1、启动job
gearmand -d
2、启动worker
php -c /etc/php5/apache2/php.ini worker.php
3、启动client(新开终端中打开)
php -c /etc/php5/apache2/php.ini client.php
屏幕显示字符串的长度 “5”
这里,有几点需要说明一下:
1、这里直接用php cli方式运行,添加-c参数是为了加载php.ini配置文件,以加载gearman扩展
2、worker应该做成守护进程(CLI模式),可以开启多个,这样client发起的任务就会分发到各个worker分别来执行(自动负载均衡 )
这个例子由于太过简单,即使开启多个worker也无法看出效果,不过可以通过终止其中一个,可以看出系统自动切换到其他worker继续正常执行
3、同理,client也是可以开启多个的(模型请参考之前的那边日志)
4、同时,job也可以开启多个,以避免单点故障
标签:
原文地址:http://www.cnblogs.com/ahwu/p/4463171.html