![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6Pq7Frh9SUS7br0RF-yNwTNeMKvl4YRPPLBWdQN-LGBeXvp18Bf5_gXEmdO2yPejIB3VsEWSocjOoQG1uW83s9oEWt2e2fLhsei1W39g6BTPb0Yr_ih17BfC-HaaRDo_FBMBOrcF7CSaPCyMuz5XuIhEj__bgQ7Eq5VMDHySCxKU_WGZdN0cLfMyU/s1600-rw/4372405053_b56aa8caac_o.jpg)
バッチ処理で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 件のコメント:
コメントを投稿