Intereting Posts
проблема маршрутизации в кодеригнере Как установить сеанс в базе данных codeigniter 3? Случайное число с плавающей запятой между 0 и 1.0 php автоматически заполнять список с помощью ajax mysql и javascript SQL работает в php admin, но возвращает пустой результат в php-коде Как исправить проблемы тайм-аута FastCGI в Plesk? Каков наилучший способ форматирования сообщений для очереди? Самый простой способ удалить все пробелы из файла кода? Рекурсивная функция для копирования многоуровневой папки не работает Что такое минимальное значение mt_rand () для PHP и как рассчитать 32-битный интергель на 32-битной Linux-панели Json_decode со специальными символами Как я могу запретить пользователям доступ к частям моего приложения Backbone, если они не вошли в систему? Response.End в PHP Веб-приложение Android RESTful с использованием Zend Framework Почему я получаю сообщение «undefined», переданное в db? jquery php plupload

cURL очень медленный на PHP 7, но не PHP 5

cURL кажется значительно медленнее для меня, используя PHP7.0.11, чем при запуске запроса из командной строки или при запуске в PHP5.6.24. Я тестирую его, используя следующий код:

$curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://img.ruphp.com/php/H1zC601.gif"); curl_setopt($curl, CURLOPT_HTTPGET, TRUE); curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); $output = curl_exec($curl); var_dump(curl_getinfo($curl)); 

В PHP5 и PHP7 интерпретатор CLI, а в PHP5 я получаю

 array(26) { ["url"]=> string(31) "http://img.ruphp.com/php/H1zC601.gif" ["content_type"]=> string(9) "image/gif" ["http_code"]=> int(200) ["header_size"]=> int(597) ["request_size"]=> int(204) ["filetime"]=> int(-1) ["ssl_verify_result"]=> int(0) ["redirect_count"]=> int(0) ["total_time"]=> float(1.260002) ["namelookup_time"]=> float(0.060424) ["connect_time"]=> float(0.068474) ["pretransfer_time"]=> float(0.089705) ["size_upload"]=> float(0) ["size_download"]=> float(34327108) ["speed_download"]=> float(27243693) ["speed_upload"]=> float(0) ["download_content_length"]=> float(34327108) ["upload_content_length"]=> float(-1) ["starttransfer_time"]=> float(0.098354) ["redirect_time"]=> float(0) ["redirect_url"]=> string(0) "" ["primary_ip"]=> string(15) "151.101.124.193" ["certinfo"]=> array(0) { } ["primary_port"]=> int(443) ["local_ip"]=> string(14) "my IP" ["local_port"]=> int(44555) } 

Хотя при запуске PHP7 я получаю

 array(26) { ["url"]=> string(31) "http://img.ruphp.com/php/H1zC601.gif" ["content_type"]=> string(9) "image/gif" ["http_code"]=> int(200) ["header_size"]=> int(609) ["request_size"]=> int(61) ["filetime"]=> int(-1) ["ssl_verify_result"]=> int(0) ["redirect_count"]=> int(0) ["total_time"]=> float(16.875167) ["namelookup_time"]=> float(0.252648) ["connect_time"]=> float(0.260626) ["pretransfer_time"]=> float(0.280489) ["size_upload"]=> float(0) ["size_download"]=> float(34327108) ["speed_download"]=> float(2034178) ["speed_upload"]=> float(0) ["download_content_length"]=> float(34327108) ["upload_content_length"]=> float(-1) ["starttransfer_time"]=> float(0.288715) ["redirect_time"]=> float(0) ["redirect_url"]=> string(0) "" ["primary_ip"]=> string(15) "151.101.124.193" ["certinfo"]=> array(0) { } ["primary_port"]=> int(443) ["local_ip"]=> string(14) "my IP" ["local_port"]=> int(55559) } 

Важная часть – total_time, которая составляет 1,3 секунды в PHP 5, но 16.9s в PHP 7.

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

На сервере работает Debian, и я не могу воспроизвести проблему на моей локальной машине Fedora.

Solutions Collecting From Web of "cURL очень медленный на PHP 7, но не PHP 5"

Такая же проблема с PHP 7 на Debian Stretch. Я заметил высокие времена sys-cpu: 0.07s пользователь 10.02s система 92% cpu 10.859 всего

Проблема была решена после отключения прозрачной_страницы:

 echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag 

Он не влияет на загрузку курсора напрямую, но замедляет распределение памяти php. См. https://serverfault.com/questions/780555/how-to-troubleshoot-high-load-caused-by-php7.

Для меня это просто похоже на проблему латентности сети или пропускную способность. Если вы просмотрите speed_download между двумя, вы увидите, что один загружается значительно быстрее, чем другой. Первый результат с использованием PHP 5/7-CLI показывает "speed_download" => float(27243693) а второй показывает "speed_download" => float(2034178) , в то время как оба они имеют идентичную длину содержимого "download_content_length" => float(34327108) .

Таким образом, первый загружает файл размером 32,7 МБ со скоростью ~ 25,9 МБ / с, а второй загружает тот же файл со скоростью ~ 1,9 МБ / с. Очевидно, что второе заняло бы много времени.

У меня такая же проблема с curl onPHP 7.0.12 я запускаю как в режиме cli, так и в режиме fpm и загружаю очень медленную скорость, скорость ухудшается со 100 Мбит / с до 1 ~ 2 Мбит / с, я переключаюсь на php 5.6 и устраняю проблему, поэтому не проблема с сетью, я уверен, надеюсь, что моя информация поможет кому-то