ご覧いただきまして誠に有難うございます。
fuelphpのTasksで非同期のタスクを実行しています。
非同期はoil refineコマンドライン実行ではなく、ajaxからにしています。
javascript
1 $.ajax({ 2 url: base_url + "task/ajax/run.json", 3 type: "post", 4 data: { 5 "data": param1 ... 6 }, ...
php
1 // コントローラー 2 public function post_run() 3 { 4 \Fuel\Tasks\Test::run($param1, $param2, ...); 5 ... 6 }
上記のようにajaxからタスクをコールするようにしています。
php
1namespace Fuel\Tasks; 2// taskクラス 3class Test 4{ 5 public static function run($param1, $param2) { 6 $pid = getmypid(); 7 var_dump($pid); // int 5380 8 try { 9 \DB::start_transaction(); 10 // モデルからMYSQLのINSERT実行 11 \Model_Task::insert_test_task($param1, $param2); 12 \DB::commit_transaction(); 13 } catch(Exception $e) { ...
*固まったタスクを途中でkill processしたく、タスククラスにpidを取得したいですが、コマンドライン実行ではないので毎回同じpid(5380)が取れます。
pid 5380は…
C:\> tasklist ... httpd.exe 5380 Console 2 18,140 K ...
fw内部(ウェブサーバ)から実行されているので当たり前な結果だと思いますが、
・タスクが実行中なのか分かって、タスク(もしくは走ってる関数)を途中でkillすることは可能でしょうか。* Test.phpクラスのインスタンス作成時instance idなどを静的変数に定義しそのインスタンスがメモリーにあるかなども試してみましたが出来そうにだめでした。
・上の方法がダメでしたら、databaseからプロセスを認知しkillすることは可能でしょうか。
・他にいい方法があったら是非教えてください。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/19 09:42