2009-09-28 3 views
0

У меня есть вложенные объекты PHP, которые я хотел бы сохранить в memcache. Могу ли я использовать json_encode(), json_decode() для хранения/извлечения данных из memcache?json_encode и вложенные объекты

Неявный вопрос заключается в том, является ли функция json_encode() «умной», чтобы интроспекция моих объектов без необходимости явного определения структуры.

Если json_encode() не подходит, как я могу хранить свои вложенные объекты в memcache?

ответ

4

Используйте serialize/unserialize для этого.

Это хорошо работает для «вложенных объектов». Существуют также 2 магических метода: __wakeup() и __sleep(), которые будут вызываться всякий раз, когда вы сериализуете/несериализуете объект. Здесь вы можете выполнять дополнительные функции, такие как: закрыть/повторно открыть файл/db-дескрипторы и т. Д. Это то, что вы не получите с json.

Json будет работать, но лучше и быстрее использовать методы сериализации PHP, поскольку они построены именно для этой цели.

+1

Нет необходимости в двойной сериализации, поскольку memcache делает это на лету. –

2

FYI клиент memcache выполняет сериализацию/несериализацию «на лету» при работе с серверами memcached, поэтому дополнительный сериализованный/несериализованный процесс не требуется. Существует довольно много накладных расходов, сопровождаемых сериализацией (если размер памяти является проблемой), поэтому вы можете перейти к новому клиенту memcached (обратите внимание на дополнительный d в конце имени клиента), который поддерживает igbinary.

Смежные вопросы