PHP でのマルチスレッドの実装に関する質問
関数を実装したいと考えています。最初にデータベースから複数のデータを読み取るだけです。
次に、データ内の項目に基づいて指定された関数を実行します。
アルゴリズムが面倒で時間がかかるのでバックグラウンドに任せて処理したい。しかし、それを達成するための良い方法がわかりません。
例
$a = new Data("a");
$b = new Data("b");
$ のリクエストを送信したいa その後、直接ジャンプして $b のリクエストを実行します。
$a のリクエストが完了するのを待ってから次の $b に進むのではなく。
a とは良い方法ですか? データ関数 複数のパラメータを受け取ります..
-----解決策---------
runOnBackground.php
などの新しい php プログラム ファイルを作成できます。次に、表示されたプログラムは非同期リクエストも処理します。 runOnBackground.php
fsockopen() またはソケット シリーズ関数を使用して非同期リクエストを送信できます。戻り値を待つ必要はありません。 runOnBackground.php ページを使用して、複雑な計算を実行することもできます。もちろん、いくつかのパラメーターを同時に送信することもできます。
マルチプロセスについては、Linux で CGI モードで実行して回転させることで使用できます。 pcntl 拡張子を使用しますが、上記の方法よりも時間がかかります。
------解決策------------------
マニュアルには fsockopen の使用例があり、必要なのはリクエストを開始するためのコードです:
$fp = fsockopen("www.example.com", 80, $errno, $) errstr, 30);
if (!$fp) {
echo "$errstr ($errno)
n";
} else {
$out = "GET / runOnBackground.php?id= 1&mode=hello HTTP/1.1rn";
$out .= "ホスト: www.example.comrn";
$out .= "接続: Closernrn";
fwrite( $fp, $out) ;
}
// 気にしないで、切断します
fclose($fp);
$_GET['id'] $_GET['mode' を通過します] runOnBackground.php のパラメータだけです