Заметив некоторое замедление работы PHP на постоянных проверках lstat всех путей открываемых файлов и директорий, решил поднастроить производительность, увеличив realpath_cache_size. Был немного удивлён, когда получил из
var_dump(realpath_cache_size(),realpath_cache_get());
int(0); array(0) {}
Ещё больше удивило, что этот баг до сих пор не решён в последних версиях PHP 5.6.
Некоторым гуглением было найдено решение: расширение, совмещающее в себе open_basedir и работающее через кеш путей php. Turbo_realpath.
В Pecl его нет, поэтому скачиваем архив с офсайта (для версий 5.4+, ниже смотрите на офсайте).
Установка в консоли:
unzip realpath_turbo_1.2.zip cd realpath_turbo phpize ./configure make make install
В php.ini или как, например, у меня в debian-like, для отдельного расширения своя конфигурация:
extension=turbo_realpath.so
заменяем настройки open_basedir
# clear all open_basedir restrictions open_basedir="" # replace it with realpath_cache_basedir = /var/www/html/drupal
Расширение может ещё некоторые security улучшения:
; set this to 1 in order to disable dangerous PHP functions (link,symlink), or set to 0 in order to ignore potential security issues <video></video>; установка в 1 чтобы отключить опасные PHP функции (link,symlink), или в 0 чтобы проигнорировать потенциально опасные вещи realpath_cache_security = 1 ; if you want, you can enable safe_mode, in order to do so, you have to switch off ; standard open_basedir setting... ; если хотите, можете включить safe_mode, в свою очередь, вы должны отключить стандартный open_basedir open_basedir = off ; and then switch on custom realpath_cache_open_basedir setting, ; (remember, safe mode is not required by realpath_turbo extension, ; you can safely ignore these settings if you want) ; и тогда включить кастомный realpath_cache_open_basedir ; (помните, safe mode не требуется для расширения realpath_turbo, вы можете спокойно игнорировать эту опцию, если хотите) real_path_cache_safe_mode = on
ссылка на оригинал статьи http://habrahabr.ru/post/270435/
Добавить комментарий