Время отклика переменной CURL - PullRequest
1 голос
/ 21 января 2010

У меня есть запрос PHP CURL к сайту HTTPS, который принимает JSON и запрашивает и возвращает ответ JSON. Обычно это не должно занимать более 1 секунды. Но я видел, что время отклика CURL является переменным. Иногда для ответа требуется 4 секунды, а иногда - 1,2 секунды. Почему это так и как я могу сделать это быстрее и обработать весь запрос менее чем за секунду?

Ниже приведено время отклика для одного и того же запроса в 3 разных раза.

Array
(
    [url] => https://xx.xx.xxx.xx/site/y
    [content_type] => application/json
    [http_code] => 200
    [header_size] => 198
    [request_size] => 358
    [filetime] => -1
    [ssl_verify_result] => 20
    [redirect_count] => 0
    [total_time] => 4.213941
    [namelookup_time] => 2.1E-5
    [connect_time] => 0.015284
    [pretransfer_time] => 0.722955
    [size_upload] => 222
    [size_download] => 553
    [speed_download] => 131
    [speed_upload] => 52
    [download_content_length] => 0
    [upload_content_length] => 0
    [starttransfer_time] => 4.015112
    [redirect_time] => 0
)


Array
(
    [url] => https://xx.xx.xxx.xx/site/y
    [content_type] => application/json
    [http_code] => 200
    [header_size] => 198
    [request_size] => 358
    [filetime] => -1
    [ssl_verify_result] => 20
    [redirect_count] => 0
    [total_time] => 1.27581
    [namelookup_time] => 8.3E-5
    [connect_time] => 0.016223
    [pretransfer_time] => 0.104996
    [size_upload] => 222
    [size_download] => 553
    [speed_download] => 433
    [speed_upload] => 174
    [download_content_length] => 0
    [upload_content_length] => 0
    [starttransfer_time] => 1.273922
    [redirect_time] => 0
)

Array
(
    [url] => https://xx.xx.xxx.xx/site/y
    [content_type] => application/json
    [http_code] => 200
    [header_size] => 198
    [request_size] => 358
    [filetime] => -1
    [ssl_verify_result] => 20
    [redirect_count] => 0
    [total_time] => 1.294147
    [namelookup_time] => 7.0E-5
    [connect_time] => 0.025723
    [pretransfer_time] => 0.123456
    [size_upload] => 222
    [size_download] => 553
    [speed_download] => 427
    [speed_upload] => 171
    [download_content_length] => 0
    [upload_content_length] => 0
    [starttransfer_time] => 1.292577
    [redirect_time] => 0
)

Ответы [ 2 ]

1 голос
/ 21 января 2010

Что еще делает сайт? Если у него фиксированное количество потоков (скажем), и каждый занят, то вашему запросу придется ждать потока, который его обслуживает. Если никакие потоки не заняты, то это будет немедленно обслужено.

Конечно, самый простой сценарий заключается в том, что ЦП сервера имеет ограниченные ресурсы и обслуживает неопределенное количество запросов, никаких гарантий обслуживания нет.

0 голосов
/ 21 января 2010

CURL - лучший способ сделать HTTP-запросы в PHP. Это почти наверняка служба, которая требует времени. Как ожидание в очереди за сэндвичем в гастрономе. Если скорость обслуживания не в ваших руках, и вы не можете использовать альтернативные службы, тогда лучше всего убедиться, что все остальное на вашей странице продолжает загружаться, пока выполняется запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...