我有一个在 Laravel 4 FW 上运行的非常简单的工作。当队列驱动程序设置为“同步”时,它工作正常。但是,当我将它设置为“beanstalkd”时,它根本无法运行!我已经运行了工匠命令php artisan queue:listen
,php artisan queue:work
但似乎没有一个工作。
当我输入php artisan queue:work
它给我以下错误:
[ErrorException]
Trying to get property of non-object
这是我的 beanstalkd 连接配置:
'beanstalkd' => array(
'driver' => 'beanstalkd',
'host' => 'localhost:11300',
'queue' => 'default',
),
我已经尝试将“主机”设置为“0.0.0.0”和“127.0.0.1”。
任何想法为什么不起作用?
编辑:
这是 fire() 方法的一些代码。
static public function fire($job, $data)
{
ini_set('memory_limit', '512M');
set_time_limit(300);
$hotel_ids = $data['hotels'];
self::$client = $data['client'];
self::$currency = $data['currency'];
// A list of paths to the generated PDFs
$paths = array();
foreach ($hotel_ids as $list) {
$hotels = Hotel::whereIn('id', $list)->orderBy('name', 'asc')->get();
$paths[] = self::makePDF($hotels);
}
#self::sentPDFs($paths);
$job->delete();
}
编辑 2:
作业本身在同步驱动程序上运行,尽管我的想法是在 beanstalkd 上。我安装了 beanstalkd 控制台,这是一种查看作业和队列的方式。这是另一件有趣的事情:工作排队,他进入“准备”阶段然后返回!而且这种情况还在继续!他进入准备阶段,然后(我相信)发生某种错误并且它出来了!我不知道错误是什么,因为它没有出现在 SYNC 驱动器中。
另一件有趣的事情:如果我从 fire 方法中删除所有代码并只允许,例如,Log::error('Error');
它会发生同样的事情!