FuelPHPのtasksのcron設定が多くなってきたので
最近もっぱらFuelPHPを使って開発を行っているのですが、
cronの設定がいつの間にか大量になってきたので
ある程度纏めれるFuelPHPのpackageを作成しました。
っ GitHub - dimgraycat/fuel-runtasks
実際どのようなpackageかは下記をご確認ください。
たとえば、
0 */1 * * * env FUEL_ENV=production php oil refine task1 0 */1 * * * env FUEL_ENV=production php oil refine task2:foo 0 */1 * * * env FUEL_ENV=production php oil refine task3:bar a b c d 0 */1 * * * env FUEL_ENV=production php oil refine task4:hoge "`date -d '1 hours ago' '+\%F \%H:00:00'`" "`date -d '1 hours ago' '+\%F \%H:59:59'`"
こんな感じで毎時に数個のtaskが実行される場合で
特にきっかり全てが0分に動かしたい分けではない時に。
または、
0 1 * * * env FUEL_ENV=production php oil refine task:extract type1 0 1 * * * env FUEL_ENV=production php oil refine task:extract type2 0 2 * * * env FUEL_ENV=production php oil refine task:transform type1 0 2 * * * env FUEL_ENV=production php oil refine task:transform type2 0 3 * * * env FUEL_ENV=production php oil refine task:load type1 0 3 * * * env FUEL_ENV=production php oil refine task:load type2
ETLの処理をcronの設定で処理をさせている時など。
上記のような設定を今回作ったpackageを使用するとこうなります。
まずはcronの設定
0 */1 * * * env FUEL_ENV=production php runtasks hourly 0 1 * * * env FUEL_ENV=production runtasks etl_type1 0 1 * * * env FUEL_ENV=production runtasks etl_type2
runtasksのconfigの設定(YAMLで記載します)
-
- -
RunTasksで注意しなければダメなところは、
設定のarrayの部分は上から順に実行されるためあまり長いtaskが設定されているとcronが多重で動き出します。
他にも設定などはありますが、githubの方をご確認ください。
■ 今後の追加予定(:未定)
- 設定ファイルが長くなるのでグループごとに別ファイルで管理できるようにする
- 最近話題になったsongmu氏作のApp::RunCron様にSTDOUT, STDERRをLogだけでなく別の物に渡せるように。
後者は設定がもっさりしてくるのであまり追加予定ではないでs