php exec 実行

これもはまった・・・

phpから処理の重いファイルを裏で実行するためにexecを利用
サクラインターネットでのソース


裏で処理するxxx.phpの呼び出し。セッション3つを引数として渡す例。
引数は半角スペースで区切るだけ。

$cmd = '/usr/local/bin/php /home/(アカウント)/www/xxx.php '. $_SESSION['a'] .' '. $_SESSION['b'] .' '. $_SESSION['c'] .' > /dev/null &';
exec($cmd);  

受け取り側は引数を$argvという配列の定数で受け取る。
$argv[1] は $_SESSION['a']
$argv[2] は $_SESSION['b']
$argv[3] は $_SESSION['c']
になる。
$argv[0] はxxx.phpが入っているらしい。
実行パスがはいる。
/home/(アカウント)/www/xxx.php

ちなみにcronだと
xxx.php
だけだった。


参考:
PHPにて重い処理を別スレッドで実行する方法!
http://web-terminal.blogspot.jp/2013/04/php.html


なににはまったか。
まず$cmdの処理の書き方が分からなかった。
あと、execで呼び出す場合はcronと同じでrequire_onceのパスを絶対パスにしておく必要がある?
これの検証と修正が大変だった。

require_onceで書かれたパスをdirname(__FILE__)を使って書き直した。