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');
まったく同じことが起こるようにすると、まったく同じことが起こります。