Есть PHP скрипт:
/*
...
достаем нужный путь к файлу из базы по информации с реквеста
$name = 'етот путь';
...
*/
$fp = fopen($name, 'rb');
header('Pragma: public');
header('Cache-Control: max-age=86400');
header('Expires: '. gmdate('D, d M Y H:i:s \G\M\T', time() + 86400));
header("Content-Type: image");
header("Content-Length: " . filesize($name));
fpassthru($fp);
exit;
Мой
.htaccess файл перенаправляет все запросы типа
image/c0b7fbb39f425760b61eab96f53fee5a_53d7b7b513a9d.png в этот скрипт, который в свою очередь по хешу достает нужный путь и отдает содержимое файла изображения.
Все работает как задумано. Но в ситуации когда на одной странице есть много таких картинок то некоторые из них не показываються. Вместо того чтоб получить картинку получаю вот такой ответ с пустым телом:
Remote Address:x.x.x.x:80
Request URL:http://...image/c0b7fbb39f425760b61eab96f53fee5a_53d7b7b513a9d.png
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:ru,en-US;q=0.8,en;q=0.6,uk;q=0.4
Connection:keep-alive
Cookie:PHPSESSID=7o1ouvllm0smad14s952dh5fq1; yii-debug-toolbar=hide; _ga=GA1.2.281170268.1406016085
Host:host.com
Referer:http://.../images
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36
Проблема явно не в самих файлах, так как после загрузки такой страницы картинки которые не показывались могут совершенно нормально показаться, а в свою очередь картинки с которыми не было проблем, могут не показаться.
Ubuntu 14.04.1 LTS
Apache/2.4.7
PHP 5.5.9-1ubuntu4.3 (модуль апача)
UPD:
Перенес вопрос в /tmp так как проблема была в другом. В картинки пробирался YiiDebugToolbar. Пришлось его отключать динамически для этого контроллера.