Я пытаюсь создать веб-интерфейс для взаимодействия с API OVH, используя официальную оболочку PHP.
Сначала я получаю свой список IP-адресов:
$ips = $ovh->get('/ip');
Но затем для каждого IP-адреса я хочу получить соответствующую информацию и поместить ее в таблицу, поэтому я делаю:
foreach ($ips as $ip) {
$ip_infos = $ovh->get('/ip/' . $ip_api);
}
Это работает, но для каждого звонка, я должен ждать предыдущего. Таким образом, загрузка полной страницы занимает около 30 ~ 40 секунд из-за ~ 100 IP.
Есть ли способ отправить только один большой запрос вместо множества маленьких с помощью PHP-оболочки OVH? Или может быть многопоточность? Все, что может значительно ускорить запросы.
До тех пор, пока ваш движок PHP не будет собран с «ZTS» (Zend Thread Safety) и у вас не установлено расширение pthread, это не может быть достигнуто с помощью только официальной оболочки PHP. Если использование простого PHP является обязательным, вы можете залатать оболочку для использования Curl Multi. Увидеть http://www.phpied.com/simultaneuos-http-requests-in-php-with-curl/ для примера.
Другой способ сделать это — использовать гибридный подход с использованием JS на стороне клиента.
Это эффективно вызовет несколько параллельных запросов и улучшит взаимодействие с пользователем. На самом деле, это то, что пользовательский интерфейс OVH делает под капотом.
Других решений пока нет …