我正在尝试创建一个Web界面,使用官方PHP包装器与OVH的API进行交互。
首先我得到我的IP列表:
$ips = $ovh->get('/ip');
但是,对于每个IP地址,我想获取相关信息并将其放在表中,所以我这样做:
foreach ($ips as $ip) {
$ip_infos = $ovh->get('/ip/' . $ip_api);
}
它有效,但是对于每个电话,我都必须等待前一个电话回来。因此,由于~100 IP,加载整个页面需要30~40秒。
有没有办法使用 OVH PHP 包装器只发送一个大请求而不是许多小请求?或者也许做多线程?任何可以显着加快请求速度的东西。
除非你的PHP引擎是用"ZTS"(Zend Thread Safety)构建的,并且你安装了pthread扩展,否则这不能使用唯一的官方PHP包装器来实现。如果必须使用纯 PHP,您可以修补包装器以使用 Curl Multi。有关示例,请参阅 http://www.phpied.com/simultaneuos-http-requests-in-php-with-curl/。
另一种方法是使用客户端 JS 的混合方法。
- PHP 返回一个包含 IP 列表的页面
- JS异步请求IP详细信息
这将有效地触发多个并行请求并改善用户体验。实际上,这就是OVH客户界面在引擎盖下所做的。