Intereting Posts
Ошибка наследования шаблона шаблона PHP Singleton Извлечение данных XML в php PHP-массив mysql извлекает каждую запись Рекомендации по проверке защищенных методов с помощью PHPUnit (на абстрактных классах) База данных SQLite, размещенная на Heroku, автоматически сбрасывается Кэш-файл кэширует сетевые файлы Как синхронизировать две таблицы различных баз данных MySQL на одном компьютере? PHP-Простой класс ведения журнала запросов не возвращает размер массива Использование символа @ для идентификации пользователей, таких как твиттер, Как создать пользовательское событие в symfony2 почему $ _REQUEST пуст Что нужно хранить в файлах cookie для реализации «Запомнить меня» во время входа в систему загружать изображения в две разные папки на сервере Есть ли в Perl динамические переменные типа PHP? Добавление полей ввода в форму при выборе выпадающего меню

Вызов API Google Адреса медленный в PHP / cURL по сравнению с браузером выборки, как ускорить работу?

Когда я вызываю вызов API автозаполнения Google Адресов (более https) из PHP с помощью cURL, я нахожу, что он намного медленнее, чем выбор того же URL-адреса из веб-браузера: на PHP такой вызов обычно занимает около 200 мс, а выборки того же URL-адреса в веб-браузере, согласно Firebug, занимает не более 45 мс. Это замедление в 4-5 раз. Более точно: первый вызов в веб-браузере может занимать до 250 мс, но последующие выборки в веб-браузере, даже при использовании разных параметров, бывают быстрыми.

Обратите внимание, что оба теста протестированы на одном компьютере, поэтому я не думаю, что вы можете обвинить его в скорости моей сети.

Теперь при добавлении туда-обратно из мобильного приложения на мой сервер такая задержка очень заметна, почти неприемлема.

Поэтому мой вопрос: в чем причина этого дополнительного замедления, и есть ли способ исправить это?

Мое первое предположение заключается в том, что SSL-квитирование и проверка сертификата API Google могут быть частью проблемы, и, возможно, поэтому первая выборка в браузере одинаково медленная. Но что бы я ни пытался, я не могу найти способ сделать это быстрее в PHP. Я думал о добавлении явного кэша для сертификата, я даже не знаю, технически ли это возможно.

Обновление: демонстрационный код (вам нужно будет заполнить свой собственный ключ API):

<?php $input = isset($_GET['input']) ? $_GET['input'] : 'vla'; define('APIKEY', 'your api key'); $params = array( 'input' => $input, 'types' => '(regions)', 'sensor' => 'false', 'language' => 'nl', 'key' => APIKEY, ); $url = "https://maps.googleapis.com/maps/api/place/autocomplete/json?" . http_build_query($params); // Initialize session and set URL. $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); // Set so curl_exec returns the result instead of outputting it. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // accept any CA curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $t = array(microtime(true)); // Get the response $json = curl_exec($ch); $t[] = microtime(true); // close the channel. curl_close($ch); echo '<plaintext>'; echo $url, "\n"; // show benchmark time printf("%s\t%0.6fs\n", 'Time', $t[sizeof($t)-1]-$t[0]); // show JSON echo $json; 

Solutions Collecting From Web of "Вызов API Google Адреса медленный в PHP / cURL по сравнению с браузером выборки, как ускорить работу?"