求解惑 , 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之后不用关闭了,下次继续用。