わかんないことはネットで調べれば良いやーと、思ってた時期が私にもありました・・。
確かに大半のことは調べればわかります。
ただ、その情報の真偽や、ほんとうに同じシチュエーションのものかなど、確認すべき点を忘れがちになります。
これは最近の自分への戒めじゃー・・・・。
というわけで、Twitterのbotを作った際に、ハッスルサーバーのcronでPHPを動かそうとしてハマった点、メモっときます。
やること
- 動かすプログラムを作る
- cronで動かすシェルを作る
- 管理画面で設定する
リストとしては簡単なのにね・・。
1は割愛します。
今回は、アクセスするとつぶやく「phpのファイル」を動かしたいケースです。
シェル:.shファイルを作る
最初の勘違い。
ハッスルサーバーにログインすると、←メニューの中に「cronの設定」っていうのがあります。
おもむろに設定するリンクをクリック。
起動させたい時間や条件を設定。
そして最後に、「実行するコマンド」を設定します。
実行するコマンドは/home/(ユーザーID)/ から始まるものか /usr/local/bin などから始まるコマンド名を指定してください
結論から言うと、ここに直接「動かしたいPHPファイルのパス」を書いてもダメです。
ほんと無知ってこわい!
完全な先入観で、なんでもOKかと思ってたのですが、cronで何かをどうにか定期的に動かしたい場合、その「何かをどう動かすか」を記述したファイルが必要とのこと。
それがシェルと呼ばれる拡張子が.shのファイル、と。
そしてそのシェルの書き方にもハマった!
最終的に、こう書いて動作してくれました。
#!/bin/sh cd /home/[自分のID]/public/www/[ファイルを置いてるディレクトリ] ; /usr/local/bin/php ./[動かしたいやつ.php] exit
www/[ファイルを置いてるディレクトリ]/**.sh <- シェル /**.php <- 動かしたいやつ
シェル自体、本来はwww直下に置かないべきものらしいので、他のケースは適宜対応すべし。
ここで記述すべきは「動かしたい対象ファイルの情報」、ってことを覚えてればよさそう。
これをそのままコピペする場合、ディレクトリ構成もあわせてください。
1・3行目はお決まりなので深追いしません。
問題は2行目!
もしかしたら2行目って、
/usr/local/bin/php /home/[自分のID]/public/www/[ファイルを置いてるディレクトリ]/[動かしたいやつ.php]
って書けたりするんかな?
面倒で試せない・・・。
改行コードでもハマる
UNIXなので、改行コードは、「LF」にしてください。
管理画面で設定
今回のケースは、上述の通り動かしたいphpと同じところに。
動かない場合
これはもうコツコツとデバッグするしかないと思います。
コツ?として、
cronの実行結果(エラー情報とか)は、メールで受信できます。
postmaster@・・・ってアドレスを設定できるので、そこを要確認。
コマンドラインでシェル起動とかできないので、最短の15分間隔で設定して、ひたすら試すしか無いです・・。
まとめるとー、
- .shファイルを忘れずに!
- 改行コードをLFで。
- 2行目のパスの書き方注意!
- パーミッションしっかり!
ゆく年どせいさんbot (yukutoshi_bot)をどうぞよろしく。
もう運用してません。。