まずPHPでの外部プログラム実行にはexec()やsystem()、proc_openなどがあります。 実行したプログラムの実行を細かく管理するにはproc_open()が便利です。 proc_open()では実行したプログラムを示すリソースが返され 以前、当サイトでご教授頂いた内容をもとに、長時間の非同期処理タイムアウトを調べています。 自分の調べた限りでは、popenではタイムアウトができないようで、proc_openに変えればチャンスがあるかと調べていますが、どう記載していいのかわかりません。 symfony/prosessでも出来そう Executing long-term processes pauses a PHP script even if you don't want to wait for the end of the process. PHPにはJavaでいうマルチスレッドのような概念はないため、非常に重たい処理を行う場合も同期処理しかできない。その解決策としては、PHPを外部プログラムとして実行させるしかなかった。 exec('実行したいプログラム > /dev/null &'); シェルでは、 "2>&1"はどういう意味ですか? phpには非同期処理という概念がありません。 集計のような時間がかかる処理を実行するとブロックされ、ブラウザが反応しなくなってしまいます。 今回、Laravelを使ったプロジェクトで、 応答待ちを避けるためのバックグラウンド化 を実装するため試行錯誤しました。 By following users and tags, you can catch up information on technical fields that you are interested in as a whole PHP: proc_open - Manual その他 不正なコマンドの実行防止.
参考資料-このシンボルはPHPで何を意味していますか? proc_open (PHP 4 >= 4.3.0, PHP 5, PHP 7) proc_open — コマンドを実行し、入出力用にファイルポインタを開く If you try to execute a command under Windows the PHP script normally waits until the process has been terminated. 非同期処理の実装サンプル. phpで標準出力も標準エラーも全部受け取るようにしていると、 popen() を使いこなせるようになろうとしているのですが、少し難しくてつまづいています。この関数は基本的に、指定したスクリプトをバックグラウンドで実行させるためのもの、と考えてよろしいでしょうか?マニュアルを読んでわからなか phpのexec関数を使って他のphpを実行したいと考えています。ネットでいろいろ検索してみているのですがなかなか答えが見つからないのでお教えいただきたいと思い質問させて頂きました。やりたいことは、「phpで他のphpを複数同時に実行したい」ということです。WindowsのXAMMP環境(開発環境)