быстрее fopen или file_get_contents?

Я использую несколько сайтов с высоким трафиком, как требование, все изображения загружаются через image.php?id=IMAGE_ID_HERE . Если вы когда-либо делали это раньше, вы знаете, что этот файл будет читать образ файла и повторять его в браузере со специальными заголовками.

Моя проблема в том, что загрузка на сервере очень высока (150-200), а команда TOP показывает несколько экземпляров image.php, поэтому image.php работает медленно!

проблема, вероятно, заключается в загрузке изображения в память перед отправкой его клиенту. Как прочитать файл и передать его напрямую?

Спасибо вам, ребята


ОБНОВИТЬ

После того, как вы оптимизировали код, используйте кеширование, где это возможно, создайте CDN. пару серверов, методы синхронизации, балансировки нагрузки и больше не нужно беспокоиться о запросах 🙂

fopen и file_get_contents почти эквивалентны

для ускорения согласования загрузки страницы, которую вы можете использовать

http://www.php.net/fpassthru

или, еще лучше

http://www.php.net/readfile

с этими функциями, содержимое файла печатается напрямую, байт за байт

в отличие от file_get_contents, например, где вы храните все данные внутри переменной

 $var = file_get_contents(); 

поэтому для правильной работы этих функций вам необходимо отключить буферизацию вывода (в противном случае это сделает файл readfile () бессмысленным) на странице, которая служит изображениям

надеюсь это поможет!

Почему вы не кэшируете содержимое изображения с помощью apc?

 if(!apc_exists('img_'.$id)){ apc_store('img_'.$id,file_get_content(...)); } echo apc_fetch('img_'.$id); 

таким образом, содержимое изображения не будет считываться с вашего диска более одного раза.