ホームページ >バックエンド開発 >PHPチュートリアル >他のサーバーからのリクエスト時に PHP が頻繁に応答しない問題を解決するにはどうすればよいですか?
このパズルを解決するには、PHP は他のサーバーからリクエストを行うと応答に失敗することがよくあります。
1 file_get_contents を直接使用して実装します
file_get_contents( $url);
2curl 拡張機能を使用します。
$ch =カール_init();
$timeout = 30;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$contents = trim(curl_exec($ch));
curl_close($ch);
3 ソケット ソケット.
$address = ' http://1.2.3.4:9001/';
$path = '/aaa/bbb';
$sock = fsockopen($address, 80, $errno, $ errstr , 30);
if (!$sock) die("$errstr ($errno)n");
$psw = md5('123.456');
$data = "xxx=xxx&yyy = yyy";
fwrite($sock, "POST $path HTTP/1.0rn");
fwrite($sock, "ホスト: localhostrn");
fwrite($sock, "コンテンツタイプ: application/x-www-form-urlencodedrn");
fwrite($sock, "Content-length: " . strlen($data) . "rn");
fwrite($sock, "Accept: * /*rn");
fwrite($sock, "rn");
fwrite($sock, "$datarn");
fwrite($sock, "rn");
$ headers = "";
while ($str = trim(fgets($sock, 4096)))
$headers .= "$strn";
$body = "";
while ( !feof($sock))
$body .= fgets($sock, 4096);
fclose($sock);
$body1 =explode("#",$body);
return $body1;
3 つのメソッドはすべて遅いです。
echo ""; を直接出力するのが通常です。
上記のコードは実際には for ループ内で実行されます。以前アクセスした時は以下のパケットキャプチャ
の効果が非常に良かったのですが、最近使用時に固まる事が多くなりました。エラーは報告されます
友達を助けてください!
-----解決策--------------------------------
1. Cookie の影響を考慮してください
2. オリジンを設定する必要があります
はすべてイントラネット アドレスですが、なぜそんなに乱雑に描いているのでしょうか。
------解決策---------
送信元アドレスのネットワークが不良ですか?
------解決策------------------