Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Async Curl POST在500毫秒内减慢了我的代码速度_Php_Performance_Curl - Fatal编程技术网

PHP Async Curl POST在500毫秒内减慢了我的代码速度

PHP Async Curl POST在500毫秒内减慢了我的代码速度,php,performance,curl,Php,Performance,Curl,我正在尝试扩大/加速我的应用程序 因此,我正在开发一个登录页,保存数据并在保存数据后重定向,为了保存数据,我在服务器上使用了另一个服务,从CURL获取post数据并将其发布到Bigquery 问题是CURL执行的时间大约是700毫秒,当我删除CURL代码时,我执行代码的时间是95-110毫秒 这是我的CURL代码示例- $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $request_url); curl_setopt(

我正在尝试扩大/加速我的应用程序

因此,我正在开发一个登录页,保存数据并在保存数据后重定向,为了保存数据,我在服务器上使用了另一个服务,从CURL获取post数据并将其发布到Bigquery

问题是CURL执行的时间大约是700毫秒,当我删除CURL代码时,我执行代码的时间是95-110毫秒

这是我的CURL代码示例-

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $request_url);
    curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $array);
    curl_setopt($ch, CURLOPT_TIMEOUT, 1);
    curl_exec($ch);
    curl_close($ch);

我希望将curl时间从700ms降低到50-180ms mif这是通过改进curl代码或使用替代解决方案来实现的

1尝试删除新的连接,这样每次都会创建一个新的TCP,如果您追求的是速度,您不希望这样

当您第一次执行CURL时,会建立TCP连接。发送数据时,连接保持活动状态,以便可以重用,默认时间为60秒

因此,它将帮助您在60秒内完成第一次呼叫后提高每次呼叫的速度


2由于您没有使用curl的结果,您可以将数据放入队列中,并与工作程序一起发送curl。

因此我找到了一个解决方案,以毫秒为单位构建异步curl,而不是秒为单位

我换了新的

curl_setopt($ch, CURLOPT_TIMEOUT, 1);


这样,我可以将卷发贴的最长时间限制在50毫秒

你无法让卷发更快。获得一个更强大的服务器。检查带宽和网络延迟。嘿,弗拉德,你能详细说明第二点吗?fresh connect在50毫秒内优化了我的代码。我也在使用appengine环境。您认为除了curl还有其他选择吗?仅供参考,我正在发布数据,但我不需要处理结果,因为我的评论有帮助。由于您对curl的结果不做任何处理,因此您可以查看消息代理,如RabbitMQ或任何发布/订阅解决方案,这些解决方案将允许您发布包含$request_url和$postFields的消息,并使用不同的进程侦听队列并执行curl。这样,它将加快速度更快,因为您的主脚本将不再等待卷曲。我更喜欢这样做,而不是实现超时,这可能会导致您的curl没有被发送。
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 50);