PHP_PHP チュートリアルに基づいた非同期実行の一般的な方法の詳細な説明

WBOY
リリース: 2016-07-21 15:09:42
オリジナル
843 人が閲覧しました

1. クライアント ページは、AJAX テクノロジーを使用してサーバーをリクエストします
利点:
最も簡単かつ最速の方法は、クライアントに返される HTML コードに AJAX 呼び出しを埋め込むか、img タグを埋め込み、src がオブジェクトを指すことです。実行される時間のかかるスクリプト。
欠点: 一般的に、Ajax は onLoad の後にトリガーされる必要があります。つまり、ユーザーがページをクリックして閉じた場合、バックグラウンド スクリプトはトリガーされません。
imgタグを使用した場合、このメソッドは厳密な意味での非同期実行とは言えません。ユーザーのブラウザは、php スクリプトの実行が完了するまで長時間待機します。つまり、ユーザーのブラウザのステータス バーには、常にロード中であることが表示されます。
もちろん、スクリプトタグなど、同様の原理を持つ他のメソッドも使用できます。
2.popen() 関数
この関数は、指定されたコマンド command の実行によって生成されたプロセスを指すパイプを開きます。指定されたコマンドの実行をフォークすることによって生成されたプロセスへのパイプを開きます。
したがって、それを呼び出すことができますが、その出力は無視できます。使用方法のコードは次のとおりです:

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

pclose(popen("/home/xinchen/backend.php &", 'r'));

利点: 方法の最初の欠点を回避し、また高速です。
欠点: このメソッドは、HTTP プロトコルを通じて別の WebService をリクエストできず、ローカル スクリプト ファイルのみを実行できます。また、一方向にのみ開くことができ、呼び出されたスクリプトに多数のパラメータを渡すことはできません。また、アクセス数が多ければ、大量のプロセスが生成されます。外部リソースを使用する場合は、競合について自分で考慮する必要があります。
3.CURL 拡張機能
CURL は、POST/GET などの HTTP リクエストをシミュレートし、データを取得および抽出し、「標準出力」(stdout) に表示できる強力な HTTP コマンド ライン ツールです。コードは次のとおりです:
コードをコピーします コードは次のとおりです:

$ch =curl_init();
$curl_opt = array(CURLOPT_URL, 'http://www.example.com/ backend.php',
CURLOPT_RETURNTRANSFER , 1,
CURLOPT_TIMEOUT, 1,);
curl_setopt_array($ch, $curl_opt);
curl _exec($ch);
curl_close($ch);

短所: 説明の通りあなたの質問では、CURLを使用するには、CUROPT_TIMEOUTを1に設定する必要があるためです(最小値は1、押し下げられています)。つまり、クライアントは少なくとも 1 秒待つ必要があります。
4.fskokopen()関数
fsockopenはソケットプログラミングをサポートしています。 fsockopenを使用してメール送信などのソケットプログラムを実装できます。 fcockopenを使用するには、手動でヘッダ部分を切り離す必要があります
使用例
コードをコピー コードは次のとおりです:

$fp = fsockopen("www.34ways.com", 80, $errno, $errstr, 30);
if (! $fp) {
echo "$errstr ($errno)
n";
} else {
$out = "GET /index.php / HTTP/1.1rn";
$out .= "ホスト: www.34ways.comrn";
$out .= "接続: Closernrn";
fwrite($fp, $out);
/*実行結果を無視
while (!feof($fp)) {
echo fgets ($fp, 128);
}*/
fclose( $fp);
}

つまり、要約すると、 fscokopen() 関数は要件を満たす必要があります。あなたはそれを試すことができます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327228.html技術記事 1. AJAX テクノロジーを使用してサーバーにリクエストするクライアント ページの利点: 最も簡単かつ最速の方法は、クライアントに返される HTML コードに AJAX 呼び出しを埋め込むか、img タグを埋め込むことです...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート