Memoize — це легка бібліотека для PHP, яка спрощує кешування функцій та їх запам'ятовування. Вона може значно підвищити продуктивність вашого застосунку, зберігаючи результати дорогих викликів функцій, щоб повторні запити з тими ж аргументами повертались миттєво без повторної обробки:
// Використання допоміжної функції
$result1 = memoize()->memo('expensive_calc', function () {
sleep(2); // Симулює затратну операцію
return 42 * 1.5 + rand(1, 100);
});
// Другий виклик з тим же ключем: повертає закешований результат (швидко)
$result2 = memoize()->memo('expensive_calc', function () {
sleep(2); // Цей код не виконається
return 99999; // Це значення буде ігноруватися, повернеться закешоване
});
// $result1 === $result2 (одинакове закешоване значення)
// Інший ключ: функція виконується знову
$result3 = memoize()->memo('another_calc', function () {
return 'інше обчислення';
});
Цей пакет запам'ятовування є корисним для оптимізації продуктивності, зокрема для затратних запитів до бази даних, API, завантаження конфігурацій, обробки файлів та інших задач:
$getUserData = function ($userId) {
// Затратний запит до бази даних або API
return database()->query("SELECT * FROM users WHERE id = ?", [$userId]);
};
// Кешування даних користувача за ID
$user = memoize()->memo("user_$userId", $getUserData);
$sameUser = memoize()->memo("user_$userId", $getUserData); // З кешу
Ви можете почати використовувати цей пакет на GitHub: tomloprod/memoize
Схоже: Якщо ви використовуєте фреймворк Laravel, зверніть увагу на допоміжну функцію once() та Memoized Cache Driver. Spatie також пропонує пакет spatie/once, який є магічною функцією запам'ятовування для ваших PHP проектів