【发布时间】:2014-04-24 00:34:11
【问题描述】:
我正在使用PHP-Resque,但无法让 perform() 方法工作。谁能告诉我我错过了什么?
这是我的设置:
- 我打开了 3 个终端,运行以下命令:
$ 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 和 Status 总是 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);
}
}
【问题讨论】:
-
我在为 codeigniter 应用程序设置 php-resque 时遇到问题。这似乎是 codeigniter 的一种方法。如果是。 php workers.php 如何适应 codeigniter 的上下文。
-
当我尝试运行工作程序时,它会显示“设置包含要工作的队列列表的 QUEUE env var”。
标签: php php-resque