レンタルサーバーでcronをまわしたいときに、
- cronの実行間隔に制限がある
- phpを実行するための設定が手間
- 実行したいphpファイルのパスを全部絶対パスに変更するのが手間
- パーミッションを設定し忘れると実行されない
- 同じ時間で複数のcronジョブが実行されないことがある?
ということで、何かと手間。これをやや簡単にする方法を紹介する。
1. cronを一定間隔で実行する設定
レンタルサーバーによって実行間隔の制限があるが、それは1個の項目についての制限。なので、例えば10分おきに実行したければ、
00 * * * * /path/to/cron_10min.sh 10 * * * * /path/to/cron_10min.sh 20 * * * * /path/to/cron_10min.sh ...
といった具合に設定する。
2. 実行ファイルを作る
上記の例での cron_10min.sh を作る。
例えばこんな感じ:
#!/bin/sh /usr/local/bin/php /path/to/cron_10min.php exit
phpのパスはphpの場所を指定。2で指定しているphpも1で入れちゃうことは可能だが、phpのバージョンを指定したかったり、他にも色々とやりたいことがあると、*.shのほうで指定したほうが便利だと思う。
*.shを実行可能(755とか)にする。
3. 実行するphpファイルを作る
このcron_10min.phpで、実行するタイミングを指定する。例えば
if( date('i') == '20'){ // DO STUFF if( date('H') == 8){ // 8:20に実行したいことを記述 } }
みたいな具合に。このファイルも実行可能にする。
urlを叩く
実行するphpを公開ディレクトリに置いていたり、別のページのurlを叩きたい場合は、file_get_contents()を使う。これを許可していない場合も多々あるので、
get_url_contents()といった方法を使うと便利。
こうすると、ファイルのパスも絶対パスにしなくてもokだし、パーミッションも気にする必要がない。coreserverでも大丈夫w