はじめに
こんにちは、エンジニアのkeitaMaxです。
Xserverでメールを送る処理を作成したいと思った時の話です。
本当はSupervisorで動かしたかったのですが、XServerだと動かすことができなさそうだったので困った話です。
Lravael10を使用しました。
実装方法
XServerのCronを設定して、Laravelのスケジューラを動かし、
スケジューラに設定してあるqueueを動かす+リスタートするバッチを動かすようにします。
XServerのCron設定
まずXServerのCron設定からCron設定追加をします。
毎分動かすようにするので以下のようにします。
cd /home/xxxxxxxx/hack/src && /usr/bin/php8.2 artisan schedule:run >> /dev/null 2>&1
phpは自分のバージョンを記載してください
またxxxxxxxxは自分のXserverのIDを入れてください。xs〜〜〜〜
みたいなやつです。
Laravelの設定
app/console/Kernel.php
に以下を追加します。
Kernel.php
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* Define the application's command schedule.
*/
protected function schedule(Schedule $schedule): void
{
$schedule->command('queue:restart')->everyMinute(); // 追加
$schedule->command('queue:work')->everyMinute(); // 追加
}
/**
* Register the commands for the application.
*/
protected function commands(): void
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}
これで準備万端です。
動かす
ソースをXServerにあげると動くようになり、メールが送られます。
おわりに
この記事での質問や、間違っている、もっといい方法があるといったご意見などありましたらご指摘していただけると幸いです。
最後まで読んでいただきありがとうございました!
参考