我正在使用PHP-Resque,无法使用 perform()方法。谁能说出我错过的东西?
这是我的设置:
$ php workers.php
$ redis-cli monitor
$ php create.php
(创建工作)
workers.php
<?php
putenv("VVERBOSE=1");
putenv("LOGGING=1");
putenv("QUEUE=* php bin/resque");
require_once APPPATH . '../vendor/chrisboulton/php-resque/bin/resque';
create.php
<?php
$jobId = Resque::enqueue('JESSE', 'Dog', ['hey'], true);
echo "JobId: $jobId\n";
$status = new Resque_Job_Status($jobId);
if ($status->isTracking()) {
echo "\nStatus: " . $status->get();
}
我总是得到一个JobId和状态为1.例如:
JobId: 757335754aec172166e8679cc3bfef58
Status: 1
我总是得到一个已插入的Redis日志。例如:
[2 127.0.0.1:38912] "sadd" "resque:queues" "JESSE"
[2 127.0.0.1:38912] "rpush" "resque:queue:JESSE" "{\"class\":\"Dog\",\"args\":[[\"hey\"]],\"id\":\"757335754aec172166e8679cc3bfef58\"}"
[2 127.0.0.1:38912] "set" "resque:job:757335754aec172166e8679cc3bfef58:status" "{\"status\":1,\"updated\":1398269884,\"started\":1398269884}"
[2 127.0.0.1:38912] "exists" "resque:job:757335754aec172166e8679cc3bfef58:status"
但它似乎根本没有运行perform()方法:
class Dog {
public function perform()
{
echo 'TEST TEST TEST TEST';
fwrite('/tmp/resque-output.txt', 'This is running', w);
fwrite(STDOUT, 'Start job! -> ');
sleep(1);
fwrite(STDOUT, 'Job ended!' . PHP_EOL);
}
}
答案 0 :(得分:4)
非常确定这是:
putenv("QUEUE=* php bin/resque");
那应该只是:
putenv("QUEUE=*");
第二部分是启动resque的命令,您将以不同的方式执行此操作。目前,它正在寻找队列* php bin/resque
而不是所有队列(*
)。