バッチ処理でPHPを直接実行させる場合や、コマンドラインでPHPプログラムを実行する時に、argsをrequestクエリとして受け取る処理をすることで、CLIでもapacheでもどちらでも使えるハイブリッド・プログラムになる。
僕は仕事でよく使うので、メモっておきます。
コード
//CLIの場合を判定する
if(!isset($_SERVER['SCRIPT_URI'])){
//argsを全てrequestに挿入する
for($i=0,$c=count($argv);$i<$c;$i++){
if(!$argv[$i]){continue;}
//各クエリの分解
$q = explode("=",$argv[$i]);
//「key=value」形式になっていない場合は処理しない
if(count($q)<2){continue;}
//keyがブランクの場合は処理しない
if($q[0]==''){continue;}
//requestに格納
$key = $q[0];
$val = join("=",array_slice($q,1));
$_REQUEST[$key]=$val;
}
}
注意点
CLIを実行するので、requestにはデータが入っていないはずですが、もしも入っている状態であれば、keyが被った場合は、上書きされてしまうので、気になる人は、上書き禁止のcontinueを挿入してください。
0 件のコメント:
コメントを投稿