Как сохранить данные в области приложения в PHP? - PullRequest
13 голосов
/ 15 сентября 2010

Я разработчик на Java и C #, и, признаюсь, я не так хорош в PHP.

Мне нужно хранить объект в области приложения, которая живет до тех пор, пока само приложение работает. Я не могу сохранить его в сеансе, потому что срок его действия истекает, и я не могу сериализовать его на диск.

Есть ли что-то вроде объекта C # Application в PHP?

1 Ответ

18 голосов
/ 15 сентября 2010

2018 Редактировать: Время не было любезно для APC, тем более что PHP 7 включает в себя встроенную поддержку Zend Optimizer +, которая делает в основном то же самое (кроме хранилища ключей) , В наши дни аспект хранилища ключей был передан в проект APCu .

Однако в 2018 году предпочтительным хранилищем ключей будет Redis . Подробнее см. проект ext-redis .


PHP имеет своего рода область применения. он называется APC (альтернативный кэш PHP) .

Данные должны кэшироваться в APC, если они соответствуют следующим критериям:

  1. Это не зависит от сессии пользователя (если это так, вставьте $ _SESSION [])
  2. Это не очень долго (если так, используйте файловую систему)
  3. Требуется только на одном PHP-сервере (если нет, рассмотрите возможность использования memcached )
  4. Вы хотите, чтобы он был доступен для каждой страницы вашего сайта, даже для других (не связанных) программ PHP.
  5. Вы не возражаете, что все данные, хранящиеся в нем, теряются при перезагрузке / перезапуске Apache.
  6. Вы хотите получить доступ к данным гораздо быстрее, чем на основе файлов, memcached или (особенно) на основе баз данных.

APC уже установлен на очень многих хостах, но следуйте вышеупомянутому руководству, чтобы установить на свой компьютер. Затем вы делаете что-то вроде этого:

if (apc_exists('app:app_level_data') !== false)
{
    $data = apc_fetch('app:app_level_data');
}
else
{
    $data = getFromDB('foo');
    apc_store('app:app_level_data', $data);
}
...