Кэш PHP-кода, который может обнаруживать идентичные файлы

Кэш PHP-кода, который может обнаруживать идентичные файлы

В настоящее время я использую APC с PHP FPM для кэширования нескольких сотен сайтов Wordpress. С кэшем в 2 гигабайта все работает хорошо, но это не очень эффективно, и кэш всегда заполнен.

Например, если у меня есть 200 сайтов Wordpress на одном сервере с одинаковыми версиями, он кэширует 200 одинаковых файлов wp-db.php.

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

Изменилось ли это за последние годы? Особенно с новым стандартным Zend Opcache? Хак вроде симлинков не идеален, например, вы не можете обновить 500 сайтов одновременно, поэтому время от времени он будет ужасно ломаться.

решение1

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

В прошлый раз, когда я использовал apc, эта функция показалась мне ошибкой, никогда не видел ее как функцию :-). Если вы используете chrootпулы -ed с php-fpm и если все пулы имеют одинаковые относительные пути в chroot, то они совместно используют один и тот же ключ кэша в apc. Поскольку ключ - это полный абсолютный путь к файлу, а в chroot этот путь к файлу не может содержать частьдоchroot-окружение.

Так что вы можете попробовать это с chroot. Но это подразумевает несколько трюков:

  • chroot-окружение должно содержать все элементы, которые могут понадобиться PHP (временные каталоги, /etc/hosts, некоторые устройства)
  • php mail не будет работать и должен использоваться в режиме smtp
  • Некоторые файлы следует исключить из кэша, все файлы, содержащие настройки, если вы забудете об этом, сайты перепутаются!
  • возможно, некоторые другие, chroot никогда не бывает простым

Связанный контент