Открытие рисунка через PHP - оптимальные варианты?

Sirius

PHP+MySQL=LOVE
Открытие рисунка через PHP - оптимальные варианты?

Для управления доступом к рисункам на сервере, используем PHP. В частности к примеру эту функцию.

PHP:
function ShowPic($Path)
	{
		header('Content-Type: image/'.$this->img['format']);
		header("Cache-control: public");
		header("Expires: ".date("r",mktime(0,0,0,1,1,2037)));
		header("Cache-control: max-age=".(60*60*24*7));
		header("Last-Modified: ".date("r",filemtime(__FILE__)));
		$fp = fopen ($Path, "rb");
		$data = fread($fp, filesize($Path));
		fclose($fp);
		#fpassthru($fp);
		#fclose ($fp);
		#exit();
		Print $data;
	}
Хочется узнать способы ускорения вывода фото - при высоких нагрузках на этот файл вывода немного тормозится.

1. Apache или Nginx - имеет значение для этой задачи?
2. Можно ли программно ускорить алгоритм выдачи?
3. Можно ли концептуально ускорить алгоритм (полностью задачу я не описал к сожалению, но постарайтесь пожалуйста ответить и на этот вопрос)?

Заранее спасибо.
 

Vallar_ultra

Любитель выпить :)
мама дорогая.....
date("r",filemtime(__FILE__))), нахрена в Last-Modified отдавать filemtime для php-файла?

1) конечно тормозит, у тебя каждый раз идет цепочка:
запрос -> веб-сервер -> ПоХаПе -> файловая система -> ПоХаПе -> веб-сервер -> ответ

теперь задачка на сообразительность, какое в этой цепи место можно считать "узким"?

2) да, написать все на плюсах или ассемблере =))
3) можно (полностью ответ на вопрос я не описал к сожалению, но постарайтесь пожалуйста его понять)

Зарание пожалуйста.
 

Сергей Тарасов

Профессор
Да... подобные проблемы были в спайлоге, когда использовался апач. Пришлось писать самописный сервер только для отдачи картинок...

-~{}~ 01.06.07 16:40:

А так, конечно ngnix... :)
 

Sirius

PHP+MySQL=LOVE
Nginx же для статики - какой прирост от вывода через php? А php как модуль апача, вроде быстрее, чем отдельно cgi php с Nginx - или я ошибаюсь?

Мдя - я тоже подумываю о написании не сервера конечно, а хотя бы C файла, отвечающего за отдачу картинок. Проблема только чтобы прикрутить к нему конфигурацию и проверки на php.
Наверное оставлю в php проверку на доступ, передам С файлу криптованные параметры местонахождения файла. Но врядли это будет быстрее :(

-~{}~ 01.06.07 18:10:

нужно что-то концептуально менять - не должен php по идее заниматься выводом картинок
 

Сергей Тарасов

Профессор
Ну так есть же еще и FastCGI :))

Апач на самом деле, хоть и лучший, но все же довольно тяжелый... во всяком случае мне не удалось собрать его легким...
Вообще, эта тема уже много раз обсуждалась и тут каждый изголяется, как может :))
 

fixxxer

К.О.
Партнер клуба
>Наверное оставлю в php проверку на доступ, передам С файлу криптованные параметры местонахождения файла.

повторяю - nginx + X-Accel-Redirect :)
 
Сверху