phpから、非同期でシェルスクリプト(task)起動
画面上からユーザに重い処理をさせたいけど、処理終わるまでブラウザ開きっぱなしは困る。
というかユーザ自身が閉じたり、タイムリミットがあったりで、実行される保証がないですよね・・・
というわけで、phpから非同期でスクリプトを起動する方法をまとめました。
- tasckは、fuelphpの場合です。fuelphpを使用しない場合は、oilでtask実行でなく、シェルスクリプトの実行にしてください。
- ※oilは、phpで書かれたtaskをコマンドラインから実行できるやつです。(fuelの機能を使える)
exec('cd ' . TASKSRUN . ';nohup php oil refine testScript' . escapeshellarg($test) .' > /dev/null &'/* '> '.TASKSRUN.'result.log 2> '.TASKSRUN.'err.log' */);
【解説】
1.まず、oilコマンドが打てるパスへ移動します。
'cd ' . TASKSRUN . '
2.非同期(結果を待たない)にして実行
';nohup php oil refine testScript' . escapeshellarg($test) .'
「nohup」をつけると、ログアウト後もコマンドを実行し続けます
3.ログに書き込み
'/* '> '.TASKSRUN.'result.log 2> '.TASKSRUN.'err.log' */
エラーログと実行時のログを別にしてます。
ログいらない方は、コメントアウトしたまま、下記にすれば、ログはできません。
' > /dev/null &'
あとは、読んだスクリプト内で終了フラグをdbとかテキストとかに書き込むようにして、メール通知するなり、
ブラウザ上に表示するなりすればOKかとおもいます。

トイレ表示のウォールステッカー♪ パロディーシリーズ♪ ウォールシート トイレ ドア 壁紙 剥がせる おしゃれ 英語
- 発売日: 2016/07/22
- ショップ:starfam

バスルームウォールステッカー バスルーム 海外バスタブ お風呂 モチーフ ウォールステッカー ウォールシール 剥がせる おしゃれ 英語
- 発売日: 2016/07/22
- ショップ:starfam

Microsoft SQL Server Developer Edition 2014 DVD 1 CAL付
- 出版社/メーカー: マイクロソフト
- 発売日: 2014/04/25
- メディア: DVD-ROM
- この商品を含むブログを見る

Unity5の教科書 2D&3Dスマートフォンゲーム入門講座 (Entertainment&IDEA)
- 作者: 北村愛実
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/06/22
- メディア: 単行本
- この商品を含むブログを見る