我有一个非常简单的job在Laravel 4 FW上运行。当队列驱动程序设置为“sync”时,它可以正常工作。但是,当我把它设置为'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',
),
我已经尝试将'host'设置为'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');
它就会发生同样的事情!
答案 0 :(得分:0)
你有installed Pheanstalk吗?需要将beanstalkd与Laravel队列系统一起使用。
答案 1 :(得分:0)
检查防火墙配置。我将端口11300添加到防火墙表中,它可以工作!