cakephpとcentosでcronを行い定期的な処理を実行しよう
cakephpを使用し、1時間に1回、1分に1回など自動的に処理を行ってくれるcron処理を実行していきたいと思います!
これができると、自分の好きなサイトの最新記事を一覧に出力したりとできるのでとても便利が良いです!
大まかな手順
cakephpのsrc/Shellディレクトリにプログラムを作成
centosでcron処理を記述
cakephpでの記述
cakephpのsrc/Shellディレクトリファイルを作成します。
今回はcron処理によって、BaseScrapingControllerをnewし、BaseScrapingControllerがもつgetScraping()メソッドを実行します。
この部分に自分の実行したい処理を作成すれば好きな処理をcornで実行するようにすることができるようになります!
【ScrapingShell.php】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php namespace App\Shell; use Cake\Console\Shell; use Cake\Log\Log; use App\Controller; class ScrapingShell extends Shell { public function main() { $scraping = new \App\Controller\BaseScrapingController(); $scraping->getScraping(); } } |
centos側での記述
centosのコマンドラインで以下の手順を行ってください
ファイルを開く
以下のコマンドでファイルの中身を編集していきます。
【コマンドライン】
1 |
$ crontab -e |
これでファイルの中身を編集していくことができます。
中身の記述方法に関しては、Vimのよく使うコマンド等で書き込み方を検索してみてください。
参考サイトを最後に紹介しますので、そこにものしておきます。
コマンドの記述
以下のコマンドを書き込み、保存します。
処理の内容は30分毎に先ほど記述したcakephpの処理を実行するという内容になります。
他にも時間の設定方法はたくさんあるので、最後に参考サイトを紹介いたします。
1 |
*/30 * * * * /home/(例)vagrant/(例)cakephp/(例)app/bin/cake scraping |
参考サイト
CakePHP3.2でControllerから自作ディレクトリのクラスをnewしたい!!!!!!!!!