質問: phpで外部プログラムのバックグラウンド処理(windows) よろしくお願いします。 phpのバージョン4でwindowsです。 現在***.exeをsystem()で実行しています。 この***.exeの処理が長い時で、10分位かかってしまうので、バックグラウウンドで処理をしたいと考えています。 コマンドプロンプトで >start ***.exe ~ を実行したところ、うまいことバックグラウンドで処理できました。 しかし、system()で上記のコードを実行したら一瞬黒い画面が出るだけで***.exeが実行されませんでした。 なにがだめなのか全然見当もつきません... 実現できればどんな方法でもかまわないので、 次の方法も試しました。 1. a.phpでsystem(">b.php") b.phpを呼び出し b.phpでsystem(">***.exe")を実行 結果:***.exeは実行されるのですがバックグラウンドで処理されない。 2. コマンドプロンプトでieを開いてa.phpにアクセス a.phpでjavascript window.openでb.phpをオープン b.phpでsystem(">***.exe")を実行 b.phpをwindow.closeで閉じる 処理は出来たのですが、a.phpが残ってしまう...(消せない、消し方がわからない) a.phpが消せればこの方法でもいいのですが... とにかく実現できればいいのですが... わかる方がいたら教えてくださいお願いします。
回答: windows版ではexec系の関数で非同期処理はできなかったと思います。 参考urlのようにpopenではいかがでしょうか。 これでもダメなら、目的のプログラムを起動してすぐ終了するようなプログラムを別に作成する必要があります。 未検証で申し訳ないのですが参考になれば幸いです。