其实该项目,在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 &)