欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

求解惑 , php向其它服务器请求时经常响应失败.该怎么解决

程序员文章站 2022-06-05 12:30:04
...
求解惑 , php向其它服务器请求时经常响应失败.
1 直接用file_get_contents 来实现
file_get_contents( $url );

2 使用curl 扩展.
$ch = curl_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 socket 套接.
$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.0\r\n");
fwrite($sock, "Host: localhost\r\n");
fwrite($sock, "Content-type: application/x-www-form-urlencoded\r\n");
fwrite($sock, "Content-length: " . strlen($data) . "\r\n");
fwrite($sock, "Accept: */*\r\n");
fwrite($sock, "\r\n");
fwrite($sock, "$data\r\n");
fwrite($sock, "\r\n");
$headers = "";
while ($str = trim(fgets($sock, 4096)))
$headers .= "$str\n";
$body = "";
while (!feof($sock))
$body .= fgets($sock, 4096);
fclose($sock);
$body1 = explode("#",$body);
return $body1;

三种方式均效果缓慢。

直接输出 echo ""; 时正常.

上述代码均在for 循环中实际运行。下面的抓包的效果

之前访问都挺好的,最近,使用时,经常卡住。会报错
求各位朋友帮忙!

------解决方案--------------------
1、考虑是否 cookie 的影响
2、应该设置来路

都是内网地址,把图涂得那么乱干什么
------解决方案--------------------
源地址的网络不好?
------解决方案--------------------
探讨

感觉是明显被请求的地方,连接资源有限。有没有办法建立一个持久连接。需要的时候,用这个资源。 不用每次连接时,都去开一个资源。

------解决方案--------------------
探讨

感觉是明显被请求的地方,连接资源有限。有没有办法建立一个持久连接。需要的时候,用这个资源。 不用每次连接时,都去开一个资源。

------解决方案--------------------
连接太频繁了,疑似DOS攻击,进临时黑名单了。

直接用curl,请求keepalive即可。

CURLOPT_FRESH_CONNECT => false
CURLOPT_FORBID_REUSE => false

配置这两个选项即可,curl_exec之后不用关闭了,下次继续用。
求解惑 , php向其它服务器请求时经常响应失败.该怎么解决

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频