Cronで定期的なバッチ処理をかけたい場合など、処理が複雑なほど途中失敗する事があり、そうなるとプロセスが溜まっていき動作が重くなります。それをtimeoutコマンドを使って解決するTipsです。
そこでtimeoutコマンドをバッチ処理の直前に記述して実行します。
1 |
timeout 秒数 php 処理ファイル |
これで失敗した時はタイムアウトし、プロセスが消滅してくれます。
Cronに記述したサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# vi /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin #MAILTO=root MAILTO="" HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 30 4 * * * root cd /home/hogeuser/public_html/app/batch/ && timeout 5400 php update_data.php |
お疲れ様です。