我在 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/