PHP异步Curl POST在500毫秒内使我的代码变慢

时间:2019-05-09 06:43:31

标签: php performance curl

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

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

问题在于CURL的执行时间约为700毫秒,当我删除CURL代码时,我正在95-110 MS中执行代码

这是我的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);

我希望通过改进卷曲代码或使用其他解决方案将卷曲时间从700ms降低到50-180ms。

2 个答案:

答案 0 :(得分:0)

1)尝试删除FRESH_CONNECT,它每次都会创建一个新的TCP,如果您追求的是速度,则不希望这样做。

首次执行CURL时,将建立TCP连接。发送数据后,连接保持活动状态,因此可以重复使用,默认时间为60秒。

因此,它将在60秒内的第一个通话之后帮助您提高每次通话的速度。

2)由于您没有使用curl的结果,因此可以将数据放入队列中,并与worker发送curl。

答案 1 :(得分:0)

因此,我找到了一种构建毫秒级卷曲的解决方案,该响应可以在几毫秒内而不是几秒钟内

我替换了

curl_setopt($ch, CURLOPT_TIMEOUT, 1);

使用

curl_setopt($ch, CURLOPT_TIMEOUT_MS, 50);

这样,我可以将发卷的最短时间限制为50MS