Выход php ограничен - PullRequest
2 голосов
/ 18 мая 2011

У меня есть проблема, может быть, кто-то уже проходил через это раньше.

Системный контроллер обслуживает загрузки php, считывает информацию из файлов и отправляет клиенту загрузку.Система работает отлично.Проблема в том, что скорость всегда низкая, всегда меньше, чем 300 кбит / с, что меньше, чем 100 кбит / с для пользователя.

На сервере есть канал 100 Мбит / с, свободный 6 Мбит / с, и клиент имеет, то его следует загрузитьсо скоростью 600 кбит / с.Что-то держит вывод php.Я пробовал искать в буферах Apache, но ничего не нашел по этому вопросу.

Кто-нибудь знает, что может происходить?

1 Ответ

6 голосов
/ 18 мая 2011

PHP действительно не предназначен для обработки больших файлов.Он должен прочитать весь этот файл в память и затем вывести его.Похоже, вы отправляете разумное количество трафика через PHP, если скорость 100 кбит / с - 300 кбит / с на пользователя слишком медленная, например, readfile(), что является плохой идеей.Вместо этого я предлагаю взглянуть на mod_xsendfile (если вы используете Apache) или его эквивалент для выбранного вами веб-сервера (например, я предпочитаю nginx и для этого буду использовать XSendFile).Тогда в PHP вы можете просто сделать это: header('X-Sendfile: ' . $file);.Сервер перехватывает заголовок и отправляет этот файл.Это дает вам преимущества того, что вы делаете с PHP, и скорость веб-сервера, непосредственно читающего файл.

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