在页面加载时,我一直在从同一个 API 请求数据。有没有办法让 cURL 连接在多个页面加载时保持活动状态以减少握手时间?我知道您可以轻松地在同一个 PHP 进程上使用 keep-alive 标头发出多个 cURL 请求,但我希望连接在一段时间内保持活动状态,而不是在进程完成时保持活动状态。
看来我需要某种守护程序插件来做到这一点。我对替代解决方案非常开放。它不必是 cURL。我一直在寻找,但没有任何运气。
谢谢!
在页面加载时,我一直在从同一个 API 请求数据。有没有办法让 cURL 连接在多个页面加载时保持活动状态以减少握手时间?我知道您可以轻松地在同一个 PHP 进程上使用 keep-alive 标头发出多个 cURL 请求,但我希望连接在一段时间内保持活动状态,而不是在进程完成时保持活动状态。
看来我需要某种守护程序插件来做到这一点。我对替代解决方案非常开放。它不必是 cURL。我一直在寻找,但没有任何运气。
谢谢!
我会说使用pfsockopen()
创建持久连接会成功。您可以打开到 HTTP API 服务器的套接字,然后进行多次请求,并在页面加载结束时关闭套接字。
<?php
$host = "protocol://your-api-hostname.com/";
$uri = "/your/api/location";
$port = 80;
// For an HTTP API, for example:
$socket = pfsockopen ($host, $port, $errno, $errstr, 0);
if (!$socket) {
echo $errno. " - " . $errstr;
} else {
// You can do here as many requests as you want.
fputs ($socket, $request1);
fputs ($socket, $request2);
// And then keep on reading until the end of the responses
$i = 0;
$a = array();
while (!feof($socket)) {
$a[$i] = fgets($socket);
$i++;
}
fclose($socket);
我不知道这是否正是您所需要的,但它为您提供了比 cURL 更多的选择。