1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

windowsでcakephpのバッチを非同期実行する方法

Last updated at Posted at 2017-10-19

前提

  • app/Console/command/MyTestShell.php作成済み
  • MyTestShell.phpのmainメソッドに処理を実装

経緯

  • cakephpで非同期処理を実行する必要があった
  • サーバはLinuxだが、ローカルがwindowsだった

コントローラの実装

TestsController.php
// 初期作業ディレクトリ
$cwd = ROOT . '/app';

$d = [0 => 'pipe', 'r'];

// コマンド
$cmd = ROOT . '/Console/cake my_test main';                                                                                                                                                                                                                                                                                

$p = proc_open($cmd, $d, $pipes, $cwd);

if (is_resource($p)) {
   fwrite($pips[0], $str);
   fclose($pips[0]);
   proc_close($p);
}

最後に

設定の問題かもしれませんが、
popenで組んだところ、ディレクトリがappではなくエラーになりました。
そのため、proc_openで実装したところ、処理が実行されました。

他にもこんなやり方があるよ、
そのやり方はよくないよ
などあれば、ぜひ教えて頂けると助かります。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?