Ефективне кешування за допомогою розширення PHP memcache у ServBay
ServBay — це потужне локальне середовище для веб-розробки, яке надає розробникам багатий набір програмних пакетів, зокрема з вбудованою підтримкою розширення PHP memcache
. memcache
— це високопродуктивна, розподілена система кешування об’єктів у пам’яті, яка широко використовується в сучасній веб-розробці для значного підвищення продуктивності додатків. Завдяки ServBay розробники можуть легко активувати та використовувати memcache
для кешування даних у своїх PHP-проектах.
Що таке Memcache?
Memcache — це універсальна розподілена система кешування у пам’яті, яка дозволяє зменшити навантаження на базу даних чи інші бекенд-сервіси за рахунок зберігання даних у оперативній пам’яті, тим самим пришвидшуючи динамічні веб-додатки. Вона ідеально підходить для кешування часто використовуваних даних, таких як результати запитів до бази даних, відповіді від API чи частини сторінок. Використання memcache
у локальному середовищі розробки допомагає краще імітувати поведінку кешування у продакшн-середовищі, сприяючи оптимізації швидкодії застосунків.
Основні переваги
- Висока продуктивність: Memcache забезпечує надзвичайно швидкий доступ до даних, кешованих у пам’яті, що суттєво пришвидшує відповіді додатку.
- Розподілена архітектура: Можливість розподілу кешу між кількома серверами для підвищення масштабованості та надійності системи.
- Простота використання: Зручний API дозволяє швидко інтегрувати та використовувати кешування у проектах.
- Зменшення навантаження на бекенд: Кешування гарячих даних зменшує кількість звернень до бази даних або файлової системи, тим самим розвантажуючи сервери та прискорюючи роботу.
Відмінності між Memcache та Memcached
У PHP існують два поширених розширення для роботи з Memcache: memcache
та memcached
. Обидва призначені для взаємодії з серверами Memcache, але відрізняються набором функцій і підходом до API:
- Розширення
memcache
:- Це більш старе розширення для PHP.
- Надає процедурний API.
- Має базовий набір функцій, не підтримує деякі сучасні можливості (наприклад, консистентне хешування, SASL-автентифікацію та ін.).
- Розширення
memcached
:- Більш сучасне розширення, як правило, базується на бібліотеці-клієнті
libmemcached
. - Пропонує об’єктно-орієнтований API.
- Підтримує розширені функції: консистентне хешування для більш ефективного розподілу ключів, двійковий протокол, SASL-автентифікацію та багато інших параметрів конфігурації.
- Більш сучасне розширення, як правило, базується на бібліотеці-клієнті
ServBay зазвичай постачає обидва ці розширення для своїх вбудованих версій PHP. У цьому документі основна увага приділяється використанню розширення memcache
, яке за замовчуванням увімкнене.
Розширення PHP memcache
у ServBay
У кожній інтегрованій версії PHP у ServBay розширення memcache
вже встановлене й активоване за замовчуванням. Це означає, що після встановлення або перемикання версії PHP ви можете одразу використовувати функціонал memcache
у своїх PHP-скриптах без додаткових налаштувань. ServBay автоматично підбирає та встановлює відповідну версію розширення згідно з вибраною версією PHP.
Перевірка та керування розширенням memcache
Хоча розширення memcache
активується за замовчуванням, ви можете переконатися в його стані й керувати ним через графічний інтерфейс ServBay.
- Відкрийте застосунок ServBay.
- У боковому меню оберіть Пакети (Packages).
- У списку знайдіть версію PHP, яку ви використовуєте (наприклад: PHP 8.2).
- Натисніть на обрану версію PHP, щоб переглянути її деталі та параметри конфігурації.
- Серед розширень PHP знайдіть
memcache
. Переконайтеся, що перемикач біля нього увімкнений (зелений колір). - За потреби ввімкніть або вимкніть розширення — просто натисніть на перемикач. Після зміни ServBay запропонує перезапустити сервіс PHP, щоб зміни набрали чинності.
Крім цього, переконайтеся, що сам сервіс Memcache також працює:
- У бічному меню ServBay оберіть Огляд (Overview) або Пакети (Packages).
- У списку служб або пакетів знайдіть Memcache.
- Перевірте, чи статус сервісу Memcache відображається як «Працює» (Running). Якщо ні — спробуйте запустити його.
Використання memcache
у PHP-коді
Після того як розширення memcache
та сам сервіс Memcache увімкнені й працюють, ви можете використовувати клієнтську бібліотеку memcache
у PHP для кешування даних. За замовчуванням сервер Memcache працює на localhost
з портом 11211
.
Нижче наведено простий приклад підключення до сервера Memcache, збереження та отримання даних із кешу:
php
<?php
// Перевірити, чи підключене розширення memcache
if (!class_exists('Memcache')) {
die("Memcache extension is not loaded.");
}
// Створити екземпляр Memcache
$memcache = new Memcache();
// Підключення до сервера Memcache
// Стандартна адреса — localhost, порт — 11211
$host = 'localhost';
$port = 11211;
if (!$memcache->connect($host, $port)) {
die("Could not connect to Memcache server at $host:$port");
} else {
echo "Successfully connected to Memcache server.<br>";
}
// --- Зберегти дані у кеш ---
$key = 'user_profile_servbay_demo'; // Визначити ключ кешу
$data = [ // Дані для кешування — це може бути рядок, число, масив, об'єкт тощо
'name' => 'ServBay Demo User',
'email' => '[email protected]',
'age' => 30,
'registered_at' => time()
];
// Зберігання даних у кеш за допомогою методу set()
// Аргументи: ключ, значення, прапорець стиснення (необов’язково), час життя у секундах
// Константа MEMCACHE_COMPRESSED дозволяє зберігати з стисненням (економить пам’ять, але навантажує CPU)
$expiration_time = 3600; // Кеш на 1 годину (3600 секунд)
if ($memcache->set($key, $data, MEMCACHE_COMPRESSED, $expiration_time)) {
echo "Data successfully set in cache for key: $key<br>";
} else {
echo "Failed to set data in cache for key: $key<br>";
}
// --- Отримати дані з кешу ---
// Отримання даних кешу за допомогою методу get()
$cachedData = $memcache->get($key);
if ($cachedData !== false) { // get() повертає false, якщо дані не знайдено або кеш прострочений
echo "Data retrieved from cache for key: $key:<br>";
print_r($cachedData);
echo "<br>";
} else {
echo "No cache found or cache expired for key: $key<br>";
}
// --- Видалити кеш (необов’язково) ---
// За потреби можна видалити елемент кешу через метод delete()
// $memcache->delete($key);
// echo "Cache for key: $key deleted.<br>";
// --- Закрити підключення (необов’язково, PHP автоматично закриває при завершенні) ---
// $memcache->close();
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Збережіть цей код у файл з розширенням .php
(наприклад, memcache_test.php
) та розмістіть його у корені вашого сайту в ServBay (наприклад, /Applications/ServBay/www/your-project-name/
). Потім відкрийте цей файл за відповідною URL-адресою у браузері (наприклад, http://your-project-name.servbay.demo/memcache_test.php
), щоб побачити результат підключення та роботи з кешем Memcache.
Необхідні умови
Перед використанням функціоналу memcache
у ServBay переконайтеся, що:
- Ви успішно встановили й запустили ServBay на macOS.
- У ServBay налаштовано один або більше сайтів на PHP, які використовують версію PHP із підтримкою розширення
memcache
. - Сервіс Memcache у ServBay запущений і працює коректно.
Примітки та вирішення проблем
- Не вдалося підключитися до сервісу Memcache:
- Переконайтеся, що сервіс Memcache у ServBay запущений — ви можете перевірити це у GUI на сторінці «Пакети» чи «Огляд», а також запустити за потреби.
- Перевірте, чи у PHP-коді використовується правильна адреса та порт (за замовчуванням це
localhost:11211
). - Переконайтеся, що локальний брандмауер не блокує підключення до порту 11211 (зазвичай у локальному середовищі це не проблема, але варто звернути увагу при особливих налаштуваннях).
- PHP помилка
Class 'Memcache' not found
:- Це означає, що розширення
memcache
не активовано для поточної версії PHP. - Перевірте у GUI ServBay, чи увімкнено розширення
memcache
для вибраної версії PHP. - Після активації розширення необхідно перезапустити сервіс PHP (це можна зробити у ServBay простим натисканням кнопки перезапуску). В окремих випадках може знадобитися повністю перезавантажити сам додаток ServBay.
- Це означає, що розширення
- Кеш не працює або працює некоректно:
- Перевірте правильність використовуваних ключів кешу.
- Переконайтеся, що встановлено адекватний час життя кешу.
- Перевірте, що запис та зчитування відбувається з одного й того ж екземпляра сервера Memcache (у стандартній конфігурації ServBay — це один локальний екземпляр).
Висновок
ServBay надає PHP-розробникам простий і ефективний спосіб використання кешування даних з memcache
у локальному середовищі розробки. Завдяки вбудованому розширенню memcache
та легкому адмініструванню сервісу Memcache, впровадження високопродуктивних стратегій кешування для PHP-проектів стає елементарним і максимально наближеним до продакшн-умов. Використовуючи можливості ServBay, ви можете зосередитися на розробці коду, не витрачаючи час на складні налаштування середовища.