Opcache max accelerated files htaccess

Opcache max accelerated files htaccess

Файл .htaccess позволяет производить дополнительную конфигурацию веб-сервера Apache для достижения таких целей, как:

  • Осуществление переадресации на другой домен
  • Ограничение доступа к сайту
  • Изменение значений директив PHP
  • Отображение собственных страниц ошибок

Редактирование файла .htaccess поможет в осуществлении следующих задач:

Домены с кириллическими символами

При использовании кириллических доменных имён в файле .htaccess, их необходимо указывать в формате Punycode. Перекодировать их можно с помощью данного сервиса.

Организация переадресации с одного сайта на другой

Для организации переадресации с одного сайта на другой достаточно добавить следующие строки в файл .htaccess:

где from.com — имя домена, с которого должна осуществляться переадресация, а "to.com" — ее цель.
При этом экранирование символа точки обратной косой чертой во второй строке не является обязательным.

Переадресация поддомена в подкаталог сайта

Организация переадресации запросов на поддомен в подкаталог сайта осуществляется путем добавления в файл .htaccess следующих строк:

где img.example.com нужно заменить на имя поддомена, с которого должна осуществляться переадресация, а img на имя подкаталога, в котором находятся файлы поддомена. При этом экранирование символа точки обратной косой чертой в третьей строке не обязательно.

Переадресация с протокола HTTP на протокол HTTPS

Переадресация с протокола HTTP на протокол HTTPS осуществляется добавлением кода в .htaccess файл:

и наоборот, с HTTPS на HTTP:

Ограничение/разрешение доступа к сайту с определённых IP-адресов

Для ограничения доступа к сайту с определённых IP-адресов в файл .htaccess требуется добавить:

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

Если требуется разрешить доступ к сайту только с определённых IP-адресов, то для этого можно добавить следующие строки:

где IP — IP-адрес, для которого будет разрешён доступ, или список таких IP-адресов перечисленных через символ пробела.

Ограничение доступа к определённым файлам

Настройка ограничения доступа к определённым файлам производится путем добавления в .htaccess файл:

где ПУТЬ_К_ФАЙЛУ — необходимо заменить на целевой файл, а IP — на IP-адрес, для которого будет разрешён доступ.

Назначение кодировки для заголовков отдаваемых сервером по умолчанию

Для назначения кодировки для заголовков отдаваемых сервером по умолчанию достаточно добавить:

Затруднения с отображением кодировок, как правило, связаны с тем, что устаревшее ПО (сайт, CMS) использует кодировку отличную от той, на работу с которой сконфигурирован сервер. Данная директива может помочь в устранении данной ошибки.

Корректная установка CMS Bitrix

Для корректной установки CMS Bitrix в файле .htaccess необходимо указать следующее :

Изменение значений директив register_globals или magic_quotes_gpc

Если используетcя PHP, установленный как модуль веб-сервера Apache, и не используются глобальные переменные, рекомендуется отключать опцию register_globals в целях безопасности. Отключение register_globals производится внесением в файл .htaccess строки:

В том случае, если "волшебные кавычки" включены, то спецсимволы, к примеру, такие как одиночные и двойные кавычки. будут экранироваться обратными слэшами "", что не всегда удобно. В версиях PHP 5.4.0. и выше данная директива не поддерживается. Для отключения "волшебных кавычек" в .htaccess следует добавить строку:

Отображение возникающих ошибок PHP на странице

Иногда для произведения анализа работы сайта может потребоваться отображение возникающих ошибок PHP в браузере. Эту задачу можно решить добавлением двух строк в файл .htaccess:

Указание собственной страницы ошибок

Установка собственных страниц ошибок возможна с помощью директивы ErrorDocument. После ErrorDocument указывается номер ошибки и путь к странице с ошибкой (либо текстовое сообщение). Примеры использования:

Временное отключение кеширования OPCache

Полный список и подробности того, какие директивы доступны для редактирования через файл .htaccess, предоставлены в официальной документации PHP и веб-сервера Apache2 по следующим ссылкам:

Не нашли ответ на свой вопрос? Позвоните нашим специалистам по бесплатному телефону 8-800-100-16-15.

На злобу дня

Опыт внедрения OPcache

7 лет я использовал в качестве ускорителя PHP-кода расширение eAccelerator (ea).

Периодически я мониторил, что предлагают альтернативные проекты (APC, XCache), но оставался приверженцем ea.

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

С выходом новой версии 1С-Битрикс обнаружилась новая проблема. 1С-Битрикс стал довольно прожорлив до памяти и сайты стали не вписываться в предусмотренные тарифными планами значения memory_limit.

Но это это полбеды. В добавок оказалось, что PHP 5.3 и 5.4 иногда может делать Segmentation fault при достижении этого лимита (подтверждением этому багрепорты от пользователей PHP; к сожалению, разработчики PHP пока не решили эту проблему).

И это еще не все. Иногда при достижении memory_limit стали появляться "залипшие" коннекты к базе данных MySQL (они находились в состоянии "Sleep"). Анализируя лог убивания залипших коннектов, обнаружил запрос к одному сайту, который гарантированно вызывал залипание коннекта. После отключения ea залипания не происходили.

Читайте также:  Шаблоны для кроссвордов в ворде

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

OPcache отличается от других кешеров тем, что именно он стал частью PHP с версии 5.5 (разрабатываемая версия).

Для PHP 5.2, 5.3, 5.4 кешер подключается как PECL-расширение zendopcache.

Миграция на OPcache вызвала затруднение в части написания файла с исключениями opcache.blacklist_filename.

В ea можно указать:

eaccelerator.filter = "!*/bitrix/cache/* !*/bitrix/managed_cache/* !*/bitrix/stack_cache/* *.php"

Оказалось, что в OPcache * не подразумевает символ /, т.е. маска работала внутри одного каталога.

В процессе изучения исходного кода выяснилось, что авторы используют возможности расширения ereg PHP: при инициализации расширение компилирует паттерны регулярных выражений-исключений, а во время работы делается только выполнение регулярных выражений по каждому скрипту-кандидату на кеширование. Очень рационально с точки зрения быстродействия (в ea этот момент примитивнее). Выяснилось, что перед компиляцей патернов ** заменяются на .*, а это уже похоже на настоящие регулярные выражения.

В итоге аналогичные исключения в OPcache выглядят так:

Слэш в начале строк нужен, чтобы OPcache не "нормализовал" путь.

Разобравшись с этим нюансом, можно сделать следующие настройки в php.ini:

Первые четыре параметра нужно подбирать в соответствии с количеством кешируемых файлов. opcache.memory_consumption — размер разделяемой памяти в мегабайтах.

Для сред разработки в документации рекомендуется opcache.revalidate_freq сделать равным 0. Для 1С-Битрикс тоже нужен 0. Не используем "слепой" кеш, постоянно сверяем дату изменения файла.

Параметр opcache.force_restart_timeout нужен, чтобы кешер автоматически перезапустился в случае проблем (например, при работе с разделяемой памятью теоретически можно словить дедлок, в ea пришлось писать патч, а тут это есть из "коробки").

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

OPcache не имеет встроенного менеджера кеша. Когда скрипт изменяется, его старая копия остается в памяти (wasted memory). Кеш очищается автоматически и полностью, если недостаточно доступной памяти для кеширования новых файлов и при этом количество "wasted memory" больше, чем opcache.max_wasted_percentage % от opcache.memory_consumption. По умолчанию opcache.max_wasted_percentage=5.

Описание параметров можно посмотреть на сайте php.net или на официальной странице на GitHub.

В итоге в "попугаях" монитора производительности 1С-Битрикс обнаружен прирост производительности примерно на 60% (с 64 до 103 баллов).

Интересно было также посмотреть на реальном проекте под хорошей нагрузкой. К счастью под рукой был такой (порядка 75 тысяч хитов к PHP в час). Рост производительности составил 20-30% по сравнению с той же конфигурацией с ea без какой-либо правки кода!

Опубликовано: 11 февраля 2014 года.

Комментарии посетителей сайта

RobertHah 27.06.2017 14:37
Мы ценим ваше время и делим с вами общие цели. Ваши продажи для нас главный приоритет.
заказать продвижение вашего товара в соц сетях логин скайпа SEO2000

оращайтесь договримся есть примеры работ логин скайпа SEO2000

Валя 15.08.2016 14:54
Как вы решили проблему со значением cacheenginenone? У меня установлен Opcahe и Битркис при проверке указывает значение cacheenginenone. Что с этим делать и как решать проблему. Производительность из за этого значения упала до 16 попугаев, а было 38

Omario 23.06.2015 00:12
Спасибо большое за ответ!
Т.е его достаточно установить на сервер, включить, а в битрикс settings ничего не писать, это дало Вам прирост в производительности?

Ответ: 23.06.2015 09:01
Да.

Omario 22.06.2015 14:19
Добрый день!
Хорошая и полезная инструкция, я как раз перехожу на VPS и есть возможность протестировать Opcache, До этого стоял APC и в панели производительности, на вкладке "Битрикс оптимально" — Место хранения кеша определялся как APC (в .settings.php так же была внесена строка для этого акселлератора), НО проблема в том что opcache установлен на сервере все работает, а Битрикс в той же вкладке определяет вот так "cacheenginenone" — т.е никак не определяет! Вы же пишите что "ничего дополнительно в сеттингс не вносили". Обратился в ТП Битрикс — ответ был такой "стандартными средствами opcache не настроить, используйте другие акселлераторы apc, xcache и т.д".

Как у Вас получилось сделать так чтобы он заработал?

Я думаю этот ответ поможет не только мне одному, т.к информации про это нет нигде.

Ответ: 22.06.2015 16:06
OPcache кеширует только опкод, т.е. предназначен для исключения фазы повторной компиляции PHP-скриптов. В нем нет механизмов для кеширования пользовательских данных.

Виталий 24.02.2015 22:30
Добрый вечер!
А что вы прописали в /bitrix/.settings.php в cache?

Ответ: 25.02.2015 00:32
специально ничего не прописывал в /bitrix/.settings.php.

Victor 17.04.2014 11:49
Здравствуйте, Алексей.
Объясните, пожалуйста, в чем смысл исключения из opcache файлов кешей Битрикс? По сути, эти файлы — тот же php-код, что и остальные php-файлы. Если исключить для них кеширование байт-кода, то их прекомпиляция будет выполняться при каждом обращении к кешам, тем самым снижая производительность. И опыт показывает, что без исключения этих файлов, монитор производительности показывает большее значение.
В чем я неправ, Алексей?
Читайте также:  Как отвязать blackberry id

Ответ: 17.04.2014 12:15
1. "код", который находится в файлах кеша битрикса, примитивен; нет смысла хранить его представление в оперативной памяти.
2. устаревание кеша влияет на размер wasted memory, в итоге рестарт opcache будет проиcходить чаще.
3. при неправильной настройке кеш битрикса начинает разрастаться до неприличных размеров.

в масштабах виртуального хостинга кеширование кеша битрикса неоправдано "дорого".

darkleech 15.03.2014 11:38
Сууупер!! Спасибо Вам огромное!!))
Сейчас тогда на Малом Бизнесе замерю, что он там шепнет мне)

darkleech 15.03.2014 09:50
Алексей, добрый день. Вы не могли бы поделиться на каком сервере вы добились производительности 103?
И на какой редакции Битрикс?
У меня на SSD не получается на редакции Бизнес больше 70 получить, к сожалению.

Заранее благодарю за все, даже если не поделитесь!)))

Поведение этих функций зависит от установок в php.ini .

Опции настройки OPcache

Имя По умолчанию Место изменения Список изменений
opcache.enable "1" PHP_INI_ALL
opcache.enable_cli "0" PHP_INI_SYSTEM В версиях с PHP 7.1.2 по 7.1.6 включительно, значение по умолчанию "1" (включено)
opcache.memory_consumption "128" PHP_INI_SYSTEM До PHP 7.0.0 значение по умолчанию было "64"
opcache.interned_strings_buffer "8" PHP_INI_SYSTEM До PHP 7.0.0. значение по умолчанию было "4"
opcache.max_accelerated_files "10000" PHP_INI_SYSTEM До PHP 7.0.0 значение по умолчанию было "2000"
opcache.max_wasted_percentage "5" PHP_INI_SYSTEM
opcache.use_cwd "1" PHP_INI_SYSTEM
opcache.validate_timestamps "1" PHP_INI_ALL
opcache.revalidate_freq "2" PHP_INI_ALL
opcache.revalidate_path "0" PHP_INI_ALL
opcache.save_comments "1" PHP_INI_SYSTEM
opcache.load_comments "1" PHP_INI_ALL Удалено в PHP 7.0.0
opcache.fast_shutdown "0" PHP_INI_SYSTEM
opcache.enable_file_override "0" PHP_INI_SYSTEM
opcache.optimization_level "0x7FFEBFFF" PHP_INI_SYSTEM До PHP 7.3.0 было 0x7FFFBFFF и до PHP 5.6.18 было 0xFFFFFFFF
opcache.inherited_hack "1" PHP_INI_SYSTEM Удалено в PHP 7.3.0
opcache.dups_fix "0" PHP_INI_ALL
opcache.blacklist_filename "" PHP_INI_SYSTEM
opcache.max_file_size "0" PHP_INI_SYSTEM
opcache.consistency_checks "0" PHP_INI_ALL
opcache.force_restart_timeout "180" PHP_INI_SYSTEM
opcache.error_log "" PHP_INI_SYSTEM
opcache.log_verbosity_level "1" PHP_INI_SYSTEM
opcache.preferred_memory_model "" PHP_INI_SYSTEM
opcache.protect_memory "0" PHP_INI_SYSTEM
opcache.mmap_base NULL PHP_INI_SYSTEM
opcache.restrict_api "" PHP_INI_SYSTEM
opcache.file_update_protection "2" PHP_INI_ALL
opcache.huge_code_pages "0" PHP_INI_SYSTEM
opcache.lockfile_path "/tmp" PHP_INI_SYSTEM
opcache.opt_debug_level "0" PHP_INI_SYSTEM
opcache.file_cache NULL PHP_INI_SYSTEM Доступно с PHP 7.0.0
opcache.file_cache_only "0" PHP_INI_SYSTEM Доступно с PHP 7.0.0
opcache.file_cache_consistency_checks "1" PHP_INI_SYSTEM Только в Windows. Доступно с PHP 7.0.0
opcache.file_cache_fallback "1" PHP_INI_SYSTEM Доступно с PHP 7.0.0
opcache.validate_permission "0" PHP_INI_SYSTEM Доступно с PHP 7.0.14
opcache.validate_root "0" PHP_INI_SYSTEM Доступно с PHP 7.0.14
opcache.preload "" PHP_INI_SYSTEM Доступно с PHP 7.4.0
opcache.preload_user "" PHP_INI_SYSTEM Доступно с PHP 7.4.0
opcache.cache_id "1" PHP_INI_SYSTEM Только в Windows. Доступно с PHP 7.4.0

Для подробного описания констант PHP_INI_*, обратитесь к разделу Где могут быть установлены параметры конфигурации.

Краткое разъяснение конфигурационных директив.

Разрешает кеширование опкодов. Если запрещено, код не будет оптимизироваться и кешироваться. Опцию opcache.enable нельзя включить во время исполнения с помощью ini_set() , но можно выключить. Попытка включить ее таким образом приведет к генерации предупреждения.

Разрешает кеширование опкодов для CLI-версии PHP.

Размер разделяемой памяти в мегабайтах для OPcache.

Количество памяти в мегабайтах для хранения интернированных строк. Игнорируется в PHP opcache.max_accelerated_files integer

Максимальное количество ключей (и, соответственно, скриптов) в хеш-таблице OPcache. Фактическое используемое значение будет первым числом из набора , которое больше или равно заданному в этом параметре. Минимум 200, максимум 100000 в PHP opcache.max_wasted_percentage integer

Максимальное значение потерянной памяти (в процентах) после которого планируется перезапуск.

Если включено, OPcache добавляет текущую рабочую директорию к ключу скрипта, тем самым устраняя возможность коллизий для файлов с одинаковым именем. Отключение этой опции повышает производительность, но может привести к сбоям.

Если включено, OPcache будет проверять актуальность закешированных скриптов каждые opcache.revalidate_freq секунд. Когда запрещено, вы можете перезапустить OPcache вручную с помощью opcache_reset() , opcache_invalidate() или перезапустив веб-сервер для того, чтобы изменения вступили в силу.

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

Эта директива игнорируется, если выключена opcache.validate_timestamps.

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

Если выключено, все комментарии будут отброшены из кеша опкодов для минимизации размера кода. Отключение этой опции может привести к тому, что некоторые фреймворки, полагающиеся на аннотации в комментариях, перестанут работать, включая Doctrine, Zend Framework 2 и PHPUnit.

Читайте также:  Как вытащить фотки из облака

Если выключено, комментарии не будут загружаться из кеша опкодов, даже если они там есть. Может использоваться вместе с opcache.save_comments для подгрузки комментариев только для тех приложений, которым они нужны.

Если включено, то будет использована быстрая последовательность перезагрузки, при которой не происходит очистки всех выделенных блоков памяти. Вместо этого для освобождения всего набора переменных используется стандартный менеджер памяти Zend Engine.

Эта директива была удалена в PHP 7.2.0. Вариант быстрой последовательности перезагрузки был интегрирован в PHP и автоматически будет использоваться, если это возможно.

Если включено, то кеш опкодов будет проверять, закеширован ли уже файл при вызове функций file_exists() , is_file() и is_readable() . Это может повысить производительность для приложений, проверяющих присутствие и доступность для чтения скриптом PHP, но несет риск возврата устаревших данных, если запрещена опция opcache.validate_timestamps.

Битовая маска, контролирующая, какие шаги оптимизации выполняются.

В PHP opcache.dups_fix boolean

Этот хак требуется только для обхода ошибок "Cannot redeclare class".

Местоположение черного списка OPcache. Файл черного списка содержит имена файлов, которые не нужно ускорять, по одной записи на строку. Допустимы шаблоны поиска и префиксы. Строки, начинающиеся с точки с запятой игнорируются

Пример простого черного списка:

Максимальный размер файла для кеширования в байтах. Если задать , то кешироваться будут все файлы.

Если не ноль, OPcache будет сверять контрольную сумму кеша каждые N запросов, где N — заданное в этой директиве значение. Рекомендуется включать только при отладке, так как сильно влияет на производительность.

Количество секунд ожидания освобождения кеша, после которого будет принудительно произведен запланированный перезапуск. Если это время превышено, OPcache считает, что происходит что-то неправильное и убивает процесс, блокирующий кеш.

Если параметр opcache.log_verbosity_level задать равным 2 или больше, то, при возникновении подобной ситуации, в лог ошибок будет записано предупреждение.

Лог ошибок OPcache. Пустая строка считается как stderr, и ошибки будут выведены в стандартный поток ошибок (в большинстве случаев это лог ошибок веб-сервера).

Уровень подробности лога ошибок. По умолчанию будут записываться только фатальные ошибки (уровень 0) и ошибки (уровень 1). Также значения могут быть следующими: предупреждения (уровень 2), информационные сообщения (уровень 3) и сообщения отладки (уровень 4).

Предпочитаемая модель памяти для OPcache. Если оставить пустым, то OPcache самостоятельно выберет наиболее подходящую модель, которая будет вести себя корректно практически в любых случаях.

Возможные значения включают mmap, shm, posix и win32.

Защищает разделяемую память от неожиданной записи во время запуска скриптов. Полезно только для внутренней отладки.

Базовое значение для сегмента разделяемой памяти в Windows. Все процессы PHP должны отображать разделяемую память в одинаковое адресное пространство. Данная опция помогает починить ошибки типа "Unable to reattach to base address".

Позволяет вызывать функции API OPcache только скриптам, чей путь начинается с указанной строки. Значение по умолчанию "" означает отсутствие ограничений.

Предотвращает кеширование файлов младше указанного количества секунд. Это помогает предотвратить кеширование не до конца обновленных файлов. В случае, если у вас все обновления файлов атомарны, можно повысить производительность, задав этот параметр равным "0".

Включает или отключает копирование кода PHP (текстового сегмента) в HUGE PAGES. Это может повысить производительность, но требует соответствующих системных настроек.

Абсолютный путь к хранилищу общих файлов блокировок (только *nix)

Производит вывод опкодов для отладки разных этапов оптимизации. 0x10000 приведет к выводу опкодов как только они сгенерированы компилятором, до применения какой-либо оптимизации. 0x20000 приведет к выводу опкодов после оптимизации.

Разрешает и задает директорию кеша второго уровня. Это должно повысить производительность в случае, если память SHM заполнена, сервер перезапущен или SHM сброшена. Значение по умолчанию "" запрещает кеширование на файловой системе.

Включает или выключает кеширование опкодов в разделяемой памяти.

Включает или выключает проверку контрольной суммы при загрузке скрипта из файлового кеша.

Применяет opcache.file_cache_only=1 для некоторых процессов, которые завершились ошибкой при переподключении к разделяемой памяти (только для Windows). Требуется явно разрешенное кеширование на файловую систему.

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

Проверяет права доступа к кешированному файлу для текущего пользователя.

Предотвращает коллизии имен в chroot-окружении. Должно быть включено для всех случаев использования chroot-окружений для предотвращения доступа к файлам за пределами chroot.

Задает скрипт PHP, который будет скомпилирован и запущен при старте сервера и сможет предзагрузить другие файлы, либо с помощью include , либо используя функцию opcache_compile_file() . Все сущности (например функции и классы), определенные в этих файлах, автоматически будут доступны до момента выключения сервера.

Предварительная загрузка кода с правами root запрещена по соображениям безопасности. Эта директива облегчает запуск предварительной загрузки от имени другого пользователя.

Ссылка на основную публикацию
Ipack пакеты для windows 10
В избранное Файл обновлен: 29 ноября 2016 Скачиваний: 5009 Размер: 25,24 Mb Название: Steampunk Год выпуска: 2016 Лицензия: Бесплатно Платформа:...
Asus k56c установка ssd
Запись сделана для тех, кто собирается делать аналогичный апгрейд своего Asus N56VZ, но безболезненно и без танцев с бубнами. А...
Asus x551m как обновить биос
BIOS предустановлен в каждое цифровое устройство по умолчанию, будь то стационарный компьютер или ноутбук. Его версии могут различаться в зависимости...
Kms connection broker что это
Привет У себя в винде нашел процесс SppExtComObj.Exe — интересно написано название, будто кто-то спецом писал то большую букву то...
Adblock detector