2017-06-05 32 views
0

キューシステム(データベース経由)を使用して電子メールを送信するLaravelアプリケーションを作成しました。これらの電子メールはジョブインスタンスであり、cron-jobが3分程度で完了するとキューにプッシュされます。nohupでLaravelキュー作業デーモンを実行すると、PDOExceptionが発生します。「一般エラー:1205ロック待ちタイムアウトを超えました」

私はSSHを介して端末に職人コマンド

/path_to_php/7.1/bin/php artisan queue:work --queue=emails_1--tries=2 --daemon 

を実行した場合、それがジョブを処理し、電子メールの送信を開始します。明らかに、私はこのコマンドを実行して、まだ実行中の端末を終了したいので、 "nohup"アプローチを使用しました。

nohup /path_to_php/7.1/bin/php artisan queue:work --queue=emails_1--tries=2 --daemon > storage/logs/laravel.log & 

これを実行した後、私はPDOException取得:

PDOException: SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction in ... 

私は前にこのような何かに遭遇したことがないように私はこのエラーと本当に慣れていないんですが、なぜ、私はキューを実行することはできませんnohupを使用して作業コマンドを実行しますが、nohupなしで問題なく実行できますか?なぜこれが起こっているのかについてのアイデアはありますか?私はLaravel 5.2を使用しています。

私に教えてください。どうもありがとう。

+0

https://stackoverflow.com/questions/5836623/getting-lock-wait-timeout-exceeded-try-restarting-transaction-even-thoughによって複製:

あなたはLaravelのGithubで追加情報がありますか~im – BDS

答えて

0

本番環境でデータベースキュードライバを使用しないでください。大きなキューを持つときにデータベースキュードライバを使用しないようにしてください。データベースベースのドライバにはデッドロックの問題がないRedisのようなものを使用することをお勧めします。 https://github.com/laravel/framework/issues/19242#issuecomment-302505260

関連する問題