2

Laravel 4 FWで実行される非常に単純な仕事があります。キュードライバーが「同期」に設定されている場合、正常に動作します。しかし、「beanstalkd」に設定すると、単に実行されません! 私はすでに artisan コマンド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 コンソールをインストールしました。ここでもう 1 つ興味深いことがあります。ジョブがキューに入れられ、「準備完了」段階に入ってから戻ります。そして、それは続きます!彼は準備段階に入り、その後 (私は信じています) 何らかのエラーが発生し、アウトになります! SYNC ドライブには表示されないため、エラーが何であるかはわかりません。

もう 1 つの興味深い点: fire メソッドからすべてのコードを削除して、たとえば、Log::error('Error');まったく同じことが起こるようにすると、まったく同じことが起こります。

4

2 に答える 2