Изображение загружается только часть времени, когда поток (?) Клиенту

Я давно пишу веб-приложение, и у меня возникли некоторые проблемы с обслуживанием изображений.

Мой код извлекает данные файла с сервера, используя file_get_contentsи использует Слима Request объекты write метод для вывода содержимого файла, установка заголовков, как он идет. Для большинства файлов это работает, однако на больших изображениях часто отображается только серый контур размеров изображения (протестировано в мобильных и настольных системах Chrome). Запрашивает ошибку с ERR_SPDY_PROTOCOL_ERRORЭто заставило меня поверить, что это проблема HTTP 2 (сервер, на котором я тестирую, прослушивает соединения HTTP 2, установлен с listen [port] http2 директива в его конфигурации nginx), однако я попытался понизить версию HTTP, используемую в ответе с PSR-7 RequestInterface«s withProtocolVersion метод и ничего не изменилось.

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

Это самая важная часть моего кода, где $filepath путь к файлу, запрошенному пользователем. Этот код работает, как и ожидалось, для всех файлов, кроме больших изображений.

return $response->withHeader('Content-Type', mime_content_type($filepath))->write(file_get_contents($filepath));

1

Решение

Я решил это с помощью Guzzle’s LazyOpenStream учебный класс. Кажется, теперь работает безупречно!

Редактировать: Итак, хотя изначально это не сработало, оказалось, что некоторые права доступа к файлам были испорчены nginxконец, так как я изменил пользователя —nginx больше не владел своим каталогом кеша FastCGI. К счастью, это было исправлено, и все, кажется, работает.
Протип если ты в моей ситуации рСвинец Tон Frackin’ LOGS!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]