バックグラウンドでPHPを定期実行する
いやね。PHPをcronで動かすと動かないことがありまして。
該当のファイルをwebからアクセスするといけると。
そんな時は、とりあえず適当にfopenでファイル書き出しで
- どこまで動いているか
- サーバ変数の値($_SERVER['SERVER_NAME'])とかがそもそもとれてる?
を調べますが、結構、$_SERVER['SERVER_NAME']とかで開発環境、ステージング、本番と設定を振り分けてると、
バックグラウンドだと$_SERVER['SERVER_NAME']が取れなくて、DB情報とか取得出来てなかったりすることがあります。
なので
<?php // バックグラウンド(cron)から実行の場合は手動設定 if(!$_SERVER['SERVER_NAME']){ $path = dirname(__FILE__); if(strstr($path,'/var/www/html/')) { define('URL', 'http://exsample.com'); } }
みたいな風にして、サーバ名が取れなかったらファイルパスで本番かどうかを判断する。
※全ての環境でパスが同じ場合はアレですが。
あとDBに接続する場合は、うまく行かない場合
<?php mysql_connect("localhost:3306", "user", "password")
↑みたいな感じでポート番号もつけたりしたらうまくいくかも。
localhostをIPにしてみたりとか。
CPIの場合はphp5として実行するとmysql4に接続するときデフォルトがmysql5なので・・・
とかある。
なのでphp4.4.7として実行してあげたら3306指定しなくてもmysql4につながった