В Linux альтернативный кэш PHP APCu — бесплатная, открытая и надёжная платформа для кэширования и оптимизации промежуточного кода PHP.
Содержание
Установка PHP APCu
Сначала необходимо установить расширение акселератора.
На сервере Ubuntu:
$ sudo apt install php-apcu
На сервере Arch Linux:
$ yay -S php-apcu
Теперь в корне сайта создаём файл, например, info.php
:
mensh@139-162-132-20:/var/www/linuxcookbook.ru/web$ sudo touch info.php
mensh@139-162-132-20:/var/www/linuxcookbook.ru/web$
Содержимое файла:
mensh@139-162-132-20:/var/www/linuxcookbook.ru/web$ cat info.php
<?php
print phpinfo();
?>
mensh@139-162-132-20:/var/www/linuxcookbook.ru/web$
Смотрим в браузере страницу с установленным info.php
:
Расширение APCu присутствует в конфигурации PHP.
Теперь можем удалить файл info.php
.
Настройка
На сервере Ubuntu файл инициализации apcu.ini
находится в каталоге /etc/php/8.1/mods-available
:
mensh@139-162-132-20:/etc/php/8.1/mods-available$ cat apcu.ini
extension=apcu.so
apc.shm_size=64M
mensh@139-162-132-20:/etc/php/8.1/mods-available$
На сервере Arch Linux файл инициализации apcu.ini
находится в каталоге /etc/php/conf.d
:
oleg@mobile:/etc/php/conf.d:$ cat apcu.ini
extension=apcu.so
apc.shm_size=64M
oleg@mobile:/etc/php/conf.d:$
Прямо под строкой, которой был включен акселератор, было добавлено apc.shm_size = 64
.
По умолчанию размер кэша составляет 32M. Установить его следует такого размера, чтобы попадания в кэш составляли не менее 95%.
Возможно, что на продакш-сервере, где нет постоянных изменений кода, можно будет добавить ещё одну строку:
apc.stat = 0
По умолчанию параметр apc.stat = 1
. При изменениях скрипта он перекомпилируется и кэширует новую версию. При установке параметра в 0
изменения скрипта не проверяются до перезагрузки сервера, что улучшает производительность.
Остальные параметры в большинстве случаев можно не изменять.
С более тонкими настройками можно ознакомиться здесь https://www.php.net/manual/ru/apcu.configuration.php
Мониторинг
Скачиваем отсюда https://github.com/krakjoe/apcu скрипт apc.php
и помещаем его в корень сайта, либо в созданный в корне каталог, например apc
.
Конфигурируется скрипт весьма просто:
mensh@139-162-132-20:/var/www/linuxcookbook.ru/web$ cat apc.php
<?php
/*
+----------------------------------------------------------------------+
| APC |
+----------------------------------------------------------------------+
| Copyright (c) 2006-2011 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.php.net/license/3_01.txt |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Authors: Ralf Becker <beckerr@php.net> |
| Rasmus Lerdorf <rasmus@php.net> |
| Ilia Alshanetsky <ilia@prohost.org> |
+----------------------------------------------------------------------+
All other licensing and usage conditions are those of the PHP Group.
*/
////////// READ OPTIONAL CONFIGURATION FILE ////////////
if (file_exists("apc.conf.php")) include("apc.conf.php");
////////////////////////////////////////////////////////
////////// BEGIN OF DEFAULT CONFIG AREA ///////////////////////////////////////////////////////////
defaults('USE_AUTHENTICATION',1); // Use (internal) authentication - best choice if
// no other authentication is available
// If set to 0:
// There will be no further authentication. You
// will have to handle this by yourself!
// If set to 1:
// You need to change ADMIN_PASSWORD to make
// this work!
defaults('ADMIN_USERNAME','apc'); // Admin Username
defaults('ADMIN_PASSWORD','password'); // Admin Password - CHANGE THIS TO ENABLE!!!
// (beckerr) I'm using a clear text password here, because I've no good idea how to let
// users generate a md5 or crypt password in a easy way to fill it in above
...
По умолчанию используются логин и пароль (apc
и password
). Измените их.
Тот, кто не желает этим пользоваться может установить идентификацию в 0
:
defaults('USE_AUTHENTICATION',0);
Теперь ззаходим по адресу https://linuxcookbook.ru/apc.php и смотрим статистику:
На представленном скрине видно, что попадания в кэш составляют 99,1%.
Заключение
Из этой короткой статьи следует, что установка и начальная настройка PHP APCu в Linux вполне доступны начинающим администраторам, даже тем, которые администрируют лишь свой VDS сервер.