上一篇文章介绍了php-resque,本篇从实战出发。
其实该项目,在composer好像很久没有维护了。
在github,还有些代码修正。
但是,毕竟composer上的代码还是可用的!
首先,composer把项目装上,不再依赖github了。
然后,
在自己项目的任意目录建3个文件,名字,类名其实自己都能改。目录也无所谓。(本文放在/data/webroot/www/code/library/Command/daemon/)
本文的composer目录是/data/webroot/www/composer
test.php
add_task.php
worker.php
在shell下。首先监听任务,并放到后台。
# ( QUEUE=default php /data/webroot/www/code/library/Command/daemon/worker.php ) &
开另外一个shell窗口,随便放一个任务。
# php /data/webroot/www/code/library/Command/daemon/add_task.php
这时会发现第一个窗口出现结果。
这时,可以强行关闭第一个窗口,然后在第2个窗口中
# ps aux | grep worker.php
屏幕应该显示
php /data/webroot/www/jspeople/code/library/Command/daemon/worker.php
========
注意,如果任务文件test.php有改动,必须强行停止resque进程,再启动。
如果redis端口变化,则
QUEUE=default REDIS_BACKEND=127.0.0.1:XXXX php /data/webroot/www/code/library/Command/daemon/worker.php
=============
注意:linux下的后台运行命令,保持在后台
其实该项目,在composer好像很久没有维护了。
在github,还有些代码修正。
但是,毕竟composer上的代码还是可用的!
首先,composer把项目装上,不再依赖github了。
然后,
在自己项目的任意目录建3个文件,名字,类名其实自己都能改。目录也无所谓。(本文放在/data/webroot/www/code/library/Command/daemon/)
本文的composer目录是/data/webroot/www/composer
test.php
<?php
require_once(realpath( dirname(__FILE__) .'/../common.php'));// 这是项目自身的db类
class My_Job22
{
public function perform()
{
// Work work work
echo $this->args['name'];
$db = Sys::getdb();
$sql="select user from admin limit 1"; //随便写一个数据库查询。
$result = $db->fetchOne($sql);
echo time(). $result."\n";
}
}
add_task.php
<?php
require '/data/webroot/www/composer/vendor/autoload.php';
require_once(realpath( dirname(__FILE__) .'/../common.php'));// 这是项目自身的db类
Resque::setBackend('localhost:6379');
$args = array(
'name' => '张三:'
);
Resque::enqueue('default', 'My_Job22', $args);
worker.php
<?php
require __DIR__.'/test.php';// 非常重要,必须包含任务类!!
require '/data/webroot/www/composer/vendor/chrisboulton/php-resque/resque.php';
在shell下。首先监听任务,并放到后台。
# ( QUEUE=default php /data/webroot/www/code/library/Command/daemon/worker.php ) &
开另外一个shell窗口,随便放一个任务。
# php /data/webroot/www/code/library/Command/daemon/add_task.php
这时会发现第一个窗口出现结果。
这时,可以强行关闭第一个窗口,然后在第2个窗口中
# ps aux | grep worker.php
屏幕应该显示
php /data/webroot/www/jspeople/code/library/Command/daemon/worker.php
========
注意,如果任务文件test.php有改动,必须强行停止resque进程,再启动。
如果redis端口变化,则
QUEUE=default REDIS_BACKEND=127.0.0.1:XXXX php /data/webroot/www/code/library/Command/daemon/worker.php
=============
注意:linux下的后台运行命令,保持在后台
(QUEUE=jobs3 REDIS_BACKEND=127.0.0.1:6380 php /var/www/worker3.php >> /tmp/1.log 2>&1 &)