PHP卷曲慢

KDV*_*KDV 16 php performance curl

由于某些原因,我的卷曲呼叫非常缓慢.这是我使用的代码.

$postData = "test"
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
$result = curl_exec($ch);
Run Code Online (Sandbox Code Playgroud)

执行此代码平均需要250毫秒才能完成.然而,当我在浏览器中打开网址时,firebug表示只需要大约80毫秒.

有什么我做错了吗?或者这是与PHP Curl相关的开销.

这是对它的呼唤

curl_exec
Run Code Online (Sandbox Code Playgroud)

这一直在占用.

更新:

所以我在发布之后就知道如果我设置了curl选项

curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
Run Code Online (Sandbox Code Playgroud)

它明显减慢了

curl_exec
Run Code Online (Sandbox Code Playgroud)

帖子数据可以是任何东西,它会减慢速度.

即使我订了

curl_setopt($ch, CURLOPT_POST, false);
Run Code Online (Sandbox Code Playgroud)

这很慢.

我将尝试通过将参数作为查询字符串添加到URI来解决它.

第二次更新:

确认如果我只使用GET调用URI并将参数作为查询字符串传递,它比使用POST并将参数放入正文要快得多.

Rom*_*aza 29

CURL在DNS查找方面存在一些问题.尝试使用IP地址而不是域名.

  • 谢谢你的提示!在我自己的测试中,这似乎就是这种情况.交换IP地址的域名将请求时间从~10s减少到~0.2s! (3认同)
  • 这应该标记为正确.竖起大拇指. (2认同)

Bre*_*ley 16

Curl能够准确判断每件作品的长度和慢度(名称查找,连接,传送时间).运行curl_exec后使用curl_getinfo(http://www.php.net/manual/en/function.curl-getinfo.php).

如果curl很慢,它通常不是PHP代码,它几乎总是与网络相关.


小智 10

尝试这个

curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
Run Code Online (Sandbox Code Playgroud)

  • 这是什么”?请在您的答案中添加一些解释,以便其他人可以从中学习 (5认同)

Jas*_*hal -2

通常,当您加载内容或发布到较慢的世界末日时,这是可以接受的。curl 调用与您的网络速度和网络服务器的吞吐量成正比