使用 OVH API 包装器的多个 API 请求
Multiple API requests with OVH API wrapper
我正在尝试使用官方 PHP 包装器创建一个网络界面来与 OVH 的 API 交互。
首先我得到我的 IP 列表:
$ips = $ovh->get('/ip');
但是,对于每个 IP 地址,我想获取相关信息并将它们放在 table 中,所以我这样做:
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 returns 包含 IP 列表的页面
- JS 异步请求 IP 详细信息
这样可以有效触发多个并行请求,提升用户体验。实际上,这就是 OVH 客户界面在幕后所做的事情。
我正在尝试使用官方 PHP 包装器创建一个网络界面来与 OVH 的 API 交互。
首先我得到我的 IP 列表:
$ips = $ovh->get('/ip');
但是,对于每个 IP 地址,我想获取相关信息并将它们放在 table 中,所以我这样做:
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 returns 包含 IP 列表的页面
- JS 异步请求 IP 详细信息
这样可以有效触发多个并行请求,提升用户体验。实际上,这就是 OVH 客户界面在幕后所做的事情。