その発想は無かったわ

よくある、GETで引数を渡して使用しているphpプログラム

http://example.com/sample.php?act=buy&cid=1192

コマンドラインで使いたい場合に、なるべく元のプログラムを弄らないで使えるように出来るかもしれない方法。

PHP公式マニュアルの第43章PHP をコマンドラインから使用する、のサンプルコードの一つを元に

#!/usr/bin/php -q
<?php
//example.php内でrequire,includeされてるライブラリのパスを設定しておく
set_include_path(get_include_path() . PATH_SEPARATOR . './lib');
if ($argv) {
   for ($i=1;$i<count($argv);$i++)
   {
       $it = split("=",$argv[$i]);
       $_GET[$it[0]] = $it[1];
   }
}

include_once "sample.php";
?>

なんてプログラムをcli_sample.phpとしてchmod +x すると、

./cli_sample.php act=buy cid=1192

な感じでそのまま使えるかも。


それが何か?って、いや引数を元にスーパーグローバル変数の$_GETを書き換えちゃうってのが発想の盲点だったのでメモ。

あまり使い道が無さそうな気もするけど、DBクエリを大量に発行するトップページなんかを定期的に静的に生成しておきたい場合なんかに

./cli_sample.php act=buy cid=1192 > sample.html

って出来ると結構便利かなー、と。