ホームページ > バックエンド開発 > PHPチュートリアル > PHP_PHP チュートリアルでマルチスレッド非同期リクエストを実装する 3 つの方法

PHP_PHP チュートリアルでマルチスレッド非同期リクエストを実装する 3 つの方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-07-13 10:40:54
オリジナル
1274 人が閲覧しました

インターネット上でさまざまなバージョンの PHP 非同期リクエスト メソッドを見てきましたが、ここでいくつかの一般的なメソッドを簡単にまとめます

1. CURL を使用してワンステップ リクエストを実装します

CURL 拡張機能はその 1 つです。これは、開発プロセスで最も一般的に使用されるメソッドであり、POST/GET などの HTTP リクエストをシミュレートし、データを取得して抽出し、「標準出力」(stdout) に表示できる強力な HTTP コマンド ライン ツールです。

例:

コードをコピーします コードは次のとおりです:

$cl =curl_init();
$curl_opt = array(CURLOPT_URL, 'http://www.uncletoo. com/demo .php',
CURLOPT_RETURNTRANSFER, 1,
curl_setopt_array($cl, $curl_opt);
curl_close($ch);

CUROPT_TIMEOUT 属性のため、最小値は 1 です。これは、クライアントが 1 秒待機する必要があることを意味します。これは、CURL メソッドを使用する場合の欠点でもあります

2 非同期リクエストを実装するには、popen() 関数を使用します


。構文形式: Popen(command, mode) 例:



コードをコピー
コードは次のとおりです: $file = Popen("/bin/ls","r ");
//実行するコードは次のとおりです
/ /...
pclose($file);
?>


popen() 関数は、プロセスを指すパイプを直接開きます。すぐに反応します。ただし、この機能は読み取りまたは書き込みのいずれか単一であり、同時実行数が多いと大量のプロセスが生成され、サーバーに負担がかかります。

さらに、例のように、プログラム終了後に pclose() を使用してプログラムを閉じる必要があります。


3. fscokopen() 関数を使用して非同期リクエストを実装します


通常、この関数は、電子メール送信関数などのソケット プログラミングを開発するときに使用します。この関数を使用する前に、PHP.ini でallow_url_fopen オプションを有効にする必要があります。さらに、変更する場合は、ヘッダー部分を自分で手動で切り離す必要があります。 例:



コードをコピーします
コードは次のとおりです: $fp = fsockopen("www.uncletoo.com/demo.php", 80, $errno, $errstr, 30); if (! $fp) { echo "$errstr ($errno)
n";
} else {
$out = "GET /index.php / HTTP/1.1rn"; = "ホスト : www.uncletoo.comrn";
$out .= "接続: Closernrn";

fwrite($fp, $out);
/*ここでは実行結果は無視されます
*テスト中にオンにすることができます
while (!feof($ fp)) {
echo fgets($fp, 128);
}*/
fclose($fp);
}


PHP 自体にはマルチスレッドがありませんが、マルチスレッド効果を達成するためのその他の方法 (上記) リストされている 3 つの方法には、それぞれ長所と短所があります。これらを使用する場合は、プログラムのニーズに応じて最適なものを選択できます。

UncleToo は経験が少ないので、PHP マルチスレッドを実装する他のより良い方法がある場合は、一緒に議論することができます。


http://www.bkjia.com/PHPjc/710596.html

www.bkjia.com

tru​​e

技術記事インターネット上でさまざまなバージョンの PHP 非同期リクエスト メソッドを見てきましたが、ここでいくつかの一般的なメソッドを簡単にまとめます。 1. CURL を使用してワンステップ リクエストを実装する CURL 拡張機能は、開発で最もよく使用されます。プロセス...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート