Стойкие объекты в WordPress / PHP

Я хотел бы создать набор постоянных объектов, которые загружают свое состояние из базы данных и затем сохраняются в памяти для загрузки страниц WordPress / PHP для использования в качестве кэшированных объектов памяти. Я бы предположил, что интерфейс для этих объектов включает:

  • initialise () – загрузить состояние из базы данных и выполнить любые другие функции инициализации, необходимые до запросов на обслуживание
  • getter_foo () – серия методов getter для PHP-кода для вызова кэшированных ответов памяти
  • getter_bar () – серия методов getter для PHP-кода для вызова кэшированных ответов в памяти
  • update () – вызываемые по времени или событиям процессы, которые просят объект вернуться к базе данных и обновить его состояние

Я подозреваю, что два трюка:

  1. Попросите основной процесс PHP выделить и сохранить ссылку на память для этих объектов, чтобы они оставались привязанными к памяти через веб-транзакции / запросы без необходимости повторной инициализации каждой базы данных
  2. Наличие механизма, позволяющего транзакционным процессам получить указатель на эти объекты.

Есть ли примеры решений, которые это делают? Я программировал годами, но очень новичок в WordPress и PHP, поэтому, возможно, это довольно просто. Не уверен. В любом случае, я признаю, что технические решения, такие как redis и memcached, могут достичь схожих целей, но менее элегантным и неконтекстно . Тем не менее, если нет простого способа сделать это, я с удовольствием использую правило 80/20. : ^)

Невозможно сохранить данные в памяти в течение 1 запроса, а затем прочитать его обратно из памяти во время другого запроса, используя только простой PHP. Конечно, PHP-процесс использует память, но как только ваш запрос будет завершен, эта часть памяти получает сбор мусора. Это означает, что второй запрос не может снова получить доступ к предыдущей части памяти.

То, о чем вы намекаете, называется кэшированием. Проще говоря, кэширование означает, что вы сохраняете вывод дорогостоящей транзакции для последующего повторного использования, чтобы сэкономить на стоимости этой транзакции. То, что вы затем используете в качестве бэкэнд для хранения этого вывода, зависит от вас или того, что у вас есть. Если вы хотите сохранить его в ОЗУ, вам понадобится нечто вроде Memcached. Вы также можете сохранить его в обычном файле, но это медленнее из-за доступа к жесткому диску.