私の Laravel 5.3.* アプリケーションでは、バックグラウンドでキューを実行しています。これは、私のローカル マシンでは問題なく動作します。しかし、これがサーバー上でライブになると (共有ホスティング)、まったく機能しません。
シナリオは次のとおりです。
管理者が管理者ジェネレーター フォーム データを送信しています。
データがデータベースに挿入されています。
同じことに関する電子メールを撮影します。
したがって、この機能をスムーズに動作させるために、サーバーの cPanel で cron ジョブを作成しました。
cron ジョブは次のとおりです。
/usr/local/bin/php /home/<username>/laravel-app/artisan schedule:run >/dev/null 2>&1
そして、ここにapp/Console/Kernel.php
ファイルの内容があります
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')
// ->hourly();
$schedule->command('queue:work --daemon --tries=3')
->everyMinute()
->withoutOverlapping();
}
また、実行してジョブ用のデータベースも作成しました
php artisan queue:table;
php artisan queue:failed-table;
php artisan migrate;
管理者が生成/挿入されると、イベントが発生します。
event(new AdministratorHasBeenGenerated($user, $request->password));
これにより、提供された電子メール ID ( app/Listeners/AdministratorHasBeenGenerated/SendWelcomeEmail.php
)にウェルカム電子メールが送信されます
/**
* Handle the event.
*
* @param AdministratorHasBeenGenerated $event
* @return void
*/
public function handle(AdministratorHasBeenGenerated $event)
{
Mail::to($event->administrator->email)
->queue(new GeneratedMail($event->administrator, $event->password));
}
そして、これが.envファイルのメール構成です
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=correct_username
MAIL_PASSWORD=correct_password
MAIL_ENCRYPTION=null
エラーなどはありませんが、正しいメール ID を入力してもウェルカム メールが届きません。
更新 1: 2017 年 12 月 21 日
この問題の実際の解決策が見つからなかったため、これは単なる回避策です。私がしたことは、キューを実行するためだけに別の cron ジョブを作成したことでした..
/usr/local/bin/php /home/<username>/laravel-app/artisan queue:work --daemon --tries=3 >/dev/null 2>&1
これにより、コマンドがqueue:work
毎分 (または cPanel の [cron ジョブ] タブで設定したもの) 実行されます。
上記の解決策は正しくないと思います..修正/修正は大歓迎です。
私がどこで何をしなければならなかったかについて、誰か間違いを指摘できますか? 4時間以上経ちましたが、これに対する解決策が見つかりませんでした.
どんな助けでも大歓迎です。ありがとう。