0

私の Laravel 5.3.* アプリケーションでは、バックグラウンドでキューを実行しています。これは、私のローカル マシンでは問題なく動作します。しかし、これがサーバー上でライブになると (共有ホスティング)、まったく機能しません。

シナリオは次のとおりです。

  1. 管理者が管理者ジェネレーター フォーム データを送信しています。

  2. データがデータベースに挿入されています。

  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時間以上経ちましたが、これに対する解決策が見つかりませんでした.

どんな助けでも大歓迎です。ありがとう。

4

0 に答える 0