冬言響 / 日記

アメコミとか映画とか音楽とか猫とか単車とか自転車とか革とか銀とかジーンズとかブーツとか今日喰ったものとか。

RSS2.0

cron

このサイトを置いてる Web サーバーで cron が使えるようになったので早速活用してみんとす。携帯電話から日記を更新したり写真を送信したり出来るようにしてるのだけどそのメールチェックの部分を。

これまでは、まず特に内容を持たないファイルを一つ置いておいて、サイトへのアクセスがあった際にそのファイルの最終更新日時をチェックし、10 分以上経ってたらメールチェックのスクリプトを起動してファイルの更新日時を更新する、という似非 cron な仕組みを作って使ってた。四六時中のべつまくなしにアクセスがあるようならだいたい 10 分ごとにスクリプトが起動される、と。良くある手だよね。で、そこら辺の仕組みを全部とっぱらって、10 分ごとにメールチェックスクリプトを cron から起動してもらうように設定した。ブラウザ上から設定出来るので crontab とかはいじってない。良く判らん。

その結果、メールを取得して送信されたテキストをデータベースに書き込むような処理は問題なく動いてるぽいのだけど、写真だとかの添付ファイルが保存されなくなってしまった。ファイル名とかは取得出来てるのだが。cron からではなくメールチェックスクリプトを直接指定して動かした場合はちゃんと保存される。

で、調べてみたりした結果、ファイルを保存するパスを指定するところで

$fp = fopen($_SERVER["DOCUMENT_ROOT"] . "/img/" . $strFilename, "w+");

的なことをやってたのだけど、というか普段から何かとサーバー環境変数使いまくりなのだけど、その辺がまずかったようで。直接起動した場合と cron から呼び出された場合とではパスだとかサーバー環境変数の内容だとかに違いが生じたりするかもよ、と。

とりあえずこの部分に関してはパスを直接書き込んで対処完了。美しくないなあ。もちっとスマートな手段がきっとあるに違いないのでおいおいと。

とまあそんな誰得メモ。