2

我有一个在 Laravel 4 FW 上运行的非常简单的工作。当队列驱动程序设置为“同步”时,它工作正常。但是,当我将它设置为“beanstalkd”时,它根本无法运行!我已经运行了工匠命令php artisan queue:listenphp 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');它会发生同样的事情!

4

2 回答 2

0

检查您的防火墙配置。我将端口 11300 添加到防火墙表中,它可以工作!

于 2013-12-20T12:29:19.280 回答
0

安装了 Pheanstalk吗?需要将 beanstalkd 与 Laravel 队列系统一起使用。

于 2013-11-13T15:31:49.743 回答