実行中の動画圧縮HandBrakeCLIのPIDを取ってくるだけのプログラム作りたい。
こんな実行状況だとして、2列目(PID)と13列目(圧縮対象ファイル名)はbashのsedで切り出す。
PHP内では
$command = "ps aux | grep HandBrake | grep -v grep | awk '{print $2,$13}'";
としておいて、
$handle = popen($command , "r");
でポインタのハンドラ作って
if($handle){
while(!feof($handle){
$buffer = fgets($handle); してバッファに入れたら
if(preg_match('/(正規表現①).*(正規表現②)/', $buffer, $m)){
する。
$bufferの文字列を正規表現①②でキャプチャして、その結果を配列$mに①②の順で入れていく。
ーーー
このキャプチャが難しい。正規表現が奥深いと言ってもいいか。以下のサイトでチェックしながら進めるけど。なかなかマッチしない。
疑問点
・$m[0] に入る圧縮ファイル名の拡張子 .ts がキャプチャされないのは何故か。
・$m[2]に 1 がキャプチャされるのは何故か。
もっと慣れないと。使い物にならん。自分が。
ーーー
とりあえず preg_match() をカタチで覚えちゃう。
preg_match('', $buffer, $m);
preg_match('//', $buffer, $m);
preg_match('/()/', $buffer, $m);
preg_match('/().*/', $buffer, $m);
preg_match('/().*()/', $buffer, $m);
preg_match('/(正規表現①).*()/', $buffer, $m);