Php 旋度慢度

Php 旋度慢度,php,performance,curl,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($c

由于某种原因,我的卷发呼叫非常慢。这是我使用的代码

$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);
执行此代码平均需要250毫秒才能完成。 然而,当我在浏览器中打开url时,firebug说只需要80毫秒

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

这是我们的使命

curl_exec
这占用了所有的时间

更新:

所以在我发布这篇文章之后我发现如果我设置了curl选项

curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
它显著减慢了速度

curl_exec
post数据可能是任何东西,它会减慢速度

即使我设定

curl_setopt($ch, CURLOPT_POST, false);
很慢

我将尝试通过将参数作为查询字符串添加到URI来解决这个问题

第二次更新:

确认如果我只是使用GET和passing参数调用URI
作为一个查询字符串,它比使用POST并将参数放入正文要快得多。

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

php中的curl函数直接使用*nix系统下的curl命令行工具

因此,它实际上只取决于网络速度,因为一般来说,curl本身比webbrowser快得多,因为它(默认情况下)不加载任何其他数据,如网站的包含图片、样式表等


您可能不知道,您测试php脚本的服务器的网络性能比您使用浏览器测试的本地计算机的网络性能差得多。因此,这两个测量值实际上并不具有可比性。

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

Curl能够准确地说出每一块花了多长时间以及慢度在哪里(名称查找、连接、传输时间)。运行curl\u exec后使用curl\u getinfo()

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

试试这个

curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );

添加“curl_setopt($ch,CURLOPT_POSTREDIR,curl_REDIR_POST_ALL);”在这里解决。此解决方案有问题吗?

我刚刚通过删除以下两个选项解决了这个问题:

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
不知怎的,在我正在抓取的网站上,POST请求超过了整整十秒钟。如果是GET,不到一秒钟


所以。。。在执行Curl请求的包装器函数中,现在,它仅在
$postData

中存在某些内容时设置这两个选项。您的浏览器和Web服务器是否共享同一连接?您是否与正在运行此操作的服务器位于同一物理位置?您是否在谈论本地主机测试或跨州或国家/地区的服务器测试。感谢您提供此提示!在我自己的测试中,情况似乎确实如此。将域名替换为IP地址将请求时间从~10秒缩短到~0.2秒!我还使用了这个解决方案,将通话时间从5秒减少到了0.5秒!非常感谢。有时,如果使用全局API,您就无法摆脱DNS,这些API使用循环,或者如果您使用裸IPv4调用它们,它们甚至不会响应。有时无法做到这一点,有些站点只能通过域访问,不能通过IP打开。这是什么?请给你的答案添加一些解释,以便其他人可以从中学习你所说的“可接受”是什么意思?一个需要三次以上时间的请求毕竟是不可接受的