Мне говорили много лет назад, что использование операторов «include» в PHP не «стоит» в производительности. Но как насчет того, когда вы запрашиваете файловую систему, например, запускаете «filemtime» или «readdir». Если я выполняю их с каждым запросом страницы, это проблема? Благодаря!Есть ли поражение производительности для запроса файловой системы в PHP?
ответ
Причина, по которой включают в себя показатели «ничего не стоят» в производительности, заключается в том, что те, которые включают файлы, также часто кэшируются. Semi скомпилированные версии PHP скрипты могут быть сохранены в кэше APC (см: http://php.net/manual/en/book.apc.php)
Помимо этого кэша, операционная система будет также кэш доступа к файлам, поэтому последующие вызовы filemtime
не нужно фактического доступа к диску каждый раз. И даже если информация о запросе ОС с жесткого диска, этот диск может также кэшировать самые последние запросы. Таким образом, существует кеширование на нескольких уровнях, чтобы обеспечить максимально быстрый доступ к диску.
Таким образом, по причинам, вызывающим filemtime
, много раз тоже не должно быть большой проблемой, но если вам нужно прочитать много разных файлов, кеши могут работать не оптимально, и у вас будет много фактического диска I/O. Eventuall, если у вас много посетителей, файловый ввод-вывод может стать узким местом. Возможно, вы сможете решить эту проблему, обновив свое оборудование. Налет SSD, скорее всего, сможет читать быстрее, чем один вращающийся диск.
Если производительность по-прежнему является проблемой, вы можете хранить файл времени в кеше самостоятельно, например APC или memcache, или даже файл include для PHP, который содержит массив соответствующей информации о файле. Конечно, вам нужно обновлять этот кеш каждый раз, когда вы пишете файл. И не забудьте прокомментировать каждую оптимизацию, которую вы делаете. Если у вас нет APC, файл include, вероятно, не принесет никакой пользы. Кроме того, запросы на memcache имеют некоторые накладные расходы, даже если сами данные находятся в памяти. Таким образом, эти решения не гарантируют улучшения.
Но, как всегда, не начинайте внедрение таких оптимизаций, если вам это не нужно. Преждевременная оптимизация ... :)
Большое спасибо! Моя система фактически запускает Nginx, это что-то меняет? – dylanized
Это не должно иметь большого значения. Я думаю, что Nginx более эффективен с точки зрения памяти, когда дело доходит до использования PHP, но способ, которым PHP обращается к диску, должен быть одинаковым. – GolezTrol
- 1. Проверка производительности файловой системы
- 2. Есть ли альтернатива наблюдателю файловой системы?
- 3. Оптимизация файловой системы (ext3)
- 4. PHP, определяющий кодировку файловой системы
- 5. Есть ли кросс-платформенная библиотека для событий файловой системы?
- 6. Есть ли сценарий POSIX для решения путей файловой системы?
- 7. Запрос файловой системы
- 8. Нужна ли насмешка файловой системы?
- 9. Нужна ли Linux для записываемой файловой системы
- 10. Есть ли фреймворк PHP для системы билета?
- 11. Является ли os.path.basename для файлов файловой системы?
- 12. Есть ли способ получить корневой путь файловой системы в рубине?
- 13. запрос файловой системы с powershell
- 14. Шифрование файловой системы для IOS?
- 15. Файловая система файловой системы
- 16. Дополнительные разрешения для файловой системы
- 17. Разработка пользовательской файловой системы для операционной системы
- 18. Структура данных для файловой системы
- 19. Объяснение boost :: формат файловой системы файловой системы в C++
- 20. Есть ли библиотека Zend2, которая обеспечивает уровень абстракции файловой системы?
- 21. Адрес для файловой системы HDFS
- 22. Ведение журнала производительности файловой системы на SD-карте
- 23. Можете ли вы предотвратить включение php из файловой системы сервера?
- 24. PHP - Обнаружение кодировки символов файловой системы
- 25. Есть ли запрос API C API для запроса смонтированной файловой системы, чтобы узнать, доступна ли она только для чтения?
- 26. Уведомления для файловой системы изменены?
- 27. Советы по повышению производительности файловой системы на основе плавких предохранителей
- 28. Параметры масштабируемости файловой системы
- 29. получить тип файловой системы с использованием файловой системы boost
- 30. Символы объектов файловой системы
Все имеет удар производительности. Если вам нужно запросить файловую систему, сделайте это. Как еще вы собираетесь получать информацию? – Barmar
Используйте [профайлер] (http://www.xdebug.org/docs/profiler). Это обычно незначительно по сравнению с запросами базы данных. – mario
@Barmar - Мы могли бы жестко кодировать результаты в код, но для этого требуется ручное обновление. Или можно запросить файловую систему один раз и кэшировать данные, но это добавит немного сложнее для приложения. – dylanized