php - Beanstalkd "delayed job"不执行

标签 php laravel laravel-4 beanstalkd

我在 Laravel 4 设置中运行作业时遇到一些问题。我可以在 Homestead 上使用它,但在生产环境中却不起作用。我正在使用 Beanstalkd (带有 pheanstalk)和 Supervisor,遵循 this tutorial .

简而言之,我想在调用作业 20 秒后删除服务器上的图像。

Queue::later(20, 'App\Queues\FileHandler@delete', ['file' => $file]);

$file 是我的文件的路径。

我的删除方法:

public function delete($job, $data)
{
    var_dump($data);
    if (File::exists($data['file']))
        File::delete($data['file']);

    $job->delete();
}

我还安装了Beanstalkd Console .

对,所以当我单击按钮时,它会触发队列。我可以在控制台上看到它现在具有正确的 $data 以及文件的正确路径。

在控制台上,time-left 从 20 开始倒计时...当它达到 0 时,它会重置为一个非常大的数字 (18446744073666)。日志中没有错误/输出。

一旦我从控制台“踢出”作业,它就会执行并且我的文件会被删除,所以我知道代码是正确的。

任何人有任何建议,这真的很烦我:(

最佳答案

版本 1.4.6 存在作业延迟的问题。如果您运行的是 1.4.6,请升级到 1.5 或 1.6

关于php - Beanstalkd "delayed job"不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26547091/

相关文章:

php - Laravel ClassLoader 包含一个不正确/旧的文件

php - 在 PHP 中动态生成的 XML 上使用 XSLT document()

php - 获取间隔之间的温差

php - Laravel 4 使用数据从 Controller 向外部 URL 发出发布请求

javascript - 如何调试未捕获错误 : [$injector:modulerr] on a compiled js file?

mysql - Laravel:无法将数据库中的数组从路由器传递到 View

PHP:在for循环中增加变量名称

php - Laravel 原始查询 - 运行此查询不会选择 id

laravel - Laravel中如何使用statement方法指定数据库连接

mysql - 通过最大列值选择每个唯一列值限制一行