Я пытаюсь отправить запрос curl to googleapis, чтобы получить информацию о пользователях. Когда я использую php-скрипт для отправки запроса cURL, для завершения требуется 5 секунд, но когда я пытаюсь отправить тот же запрос непосредственно с сервера с помощью команды curl, результат возвращается мгновенно.Curl от php занимает больше времени, чем завиток через putty
Вот PHP скрипт я использую:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.googleapis.com/oauth2/v2/userinfo");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Authorization: Bearer '.$accessToken));
$output=curl_exec($ch);
И вот локон команда, я использовал с замазкой:
curl --header "Authorization: Bearer xxxxxx" https://www.googleapis.com/oauth2/v2/userinfo
Что может быть проблема?
Примечание: скрипт PHP работает на том же сервере, с которого я emmited скручивания команды с помощью шпаклевки
Примечание 2: Может быть, это какая-то проблема DNS поиска? Сначала выполнение этой же команды через командную строку также заняло около 5 секунд, потому что www.googleapis.com не было на нашем DNS-сервере. С тех пор мы добавили его вручную, а функция командной строки работает намного быстрее. Какая информация DNS используется PHP, если я обновляю информацию DNS на сервере, автоматически ли она обновляется и для PHP?
Примечание 3: рыть www.googleapis.com возвращает следующее:
; < < >> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 < < >> www.googleapis.com
;; глобальные опции: + cmd
;; Получил ответ:
;; - >> HEADER < < - код операции: QUERY, статус: NOERROR, id: 5273
;; флаги: qr rd ra; QUERY: 1, ОТВЕТ: 2, ПОЛНОМОЧИЙ: 0, ДОПОЛНИТЕЛЬНО: 0;; РАЗДЕЛ ВОПРОСА:
; www.googleapis.com. IN A;; РАЗДЕЛ ОТВЕТ:
www.googleapis.com. 1536 В CNAME googleapis.l.google.com.
googleapis.l.google.com. 172 IN A 216.58.218.170;; Время запроса: 0 мс
;; СЕРВЕР: 10.0.80.11 # 53 (10.0.80.11)
;; КОГДА: ср. 9 сентября 14:35:04 2015
;; MSG SIZE RCVD: 89
Как вы выполняете PHP-код? Я предполагаю, что оба успеха? –
Оба успеха, оба возвращают тот же самый ответ, только для версии php требуется 5 секунд, в то время как прямая версия занимает всего 1 секунду. Вышеупомянутый PHP-код является частью большого скрипта, но если я прокомментирую $ output = curl_exec ($ ch); line, весь скрипт выполняется менее чем за секунду: | –
Вы используете скрипт из CLI? Если так - вы уверены, что это проблема с завитой? У меня был аналогичный пятисекундный тайм-аут. И это была не проблема завитка, а задержка запуска php. Чтобы проверить его задачу запуска (в случае cli), просто попробуйте запустить: php -r 'echo 1;' И проверьте, сколько времени потребуется. – Endijs