自分が実装する際になかなか良い情報に出会えずかなり時間がかかったので備忘録も兼ねて残しておきます。
今回はフレームワークにlaravelを使用したCRON実装法を解説していきます。
まず初めにLaravelのドキュメントでは、以下のように設定すれば良いと書いています。
* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F648324%2Fd49db126-db46-1bbc-567b-9590792019f9.png?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&s=5efd0526ab3d36611ab75b9d711e7080)
しかし、これをx-serverのcron設定コマンドに書いたところでなにも動きません。。。
x-serverではこのような記述はできないようです。。。
じゃあどうするのって躓いているあなたに向けて実装法を解説していきます。
3ステップでめちゃめちゃ簡単です。
1.シェルスクリプトの作成
まずはじめに以下のコードを書いたファイルを作成します。
#!/bin/sh
/usr/bin/php7.3/home/サーバーID/独自ドメイン名/laravel/artisan schedule:run
laravelディレクトリ直下に作成したファイルを置きます。
※phpのバージョンは環境に合わせて適宜変更してください。
拡張子が.shであればファイル名は何でもいいです。
2.shファイルの権限を755に変更
次に権限を変更しないとx-server側でCRONを実行してくれません。
以下のコマンドで権限を755に変更できます。
chmod 755 sh_test.sh
実行できたら以下のコマンドで権限の確認ができます。
ls -l sh_test.sh
以下リンクに詳細が書いてあるので参考にしてみてください。
3.x-server側でのCRON設定
最後はCRONの設定をするのみです。
以下を参考に設定してみてください。
/home/サーバーID/独自ドメイン名/laravel/sh_test.sh
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F648324%2F22418bc6-4508-c0e3-85ad-52516ae733ae.png?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&s=472495bca5ee180bbae9c170ffaa01bc)
設定後はアドレスを追加し実行結果を確認してみてください。(無料会員はメール通知機能を使えません。)
以上がx-serverでCRONを実装する方法でした。
追記
うまく動かない場合はステップ1でphp7.3の後ろに半角スペースを空けて再度試してみてください。
#!/bin/sh
/usr/bin/php7.3 /home/サーバーID/独自ドメイン名/laravel/artisan schedule:run
私は半角スペースなくでも動作しましたが、これでうまくいったと連絡を受けました事例もありました。
kawa_matsuさんありがとうございました!!