У меня есть некоторый серверный PHP-код, который пытается сохранить объект данных (по сути, многомерный массив) в серверной базе данных. Этот объект данных изначально поступает как объект действия AMF, отправленный из приложения flex. Я хочу сохранить объект целиком для дальнейшего использования, поэтому я использовал функцию сериализации php и закодировал объект простой строкой, которая может войти в поле базы данных. Код выглядит так:
$serializedDataObject = base64_encode(serialize($objectInstance->myDataObject));
Когда я хочу восстановить этот объект и вернуть его, я просто запускаю реверс
$unserializedDatanObject = unserialize(base64_decode($serializedDataObject));
Пока, похоже, это работает хорошо. Но иногда мой PHP-скрипт не работает. Я думаю, что это не удается на этапе сериализации. Мой вопрос теоретически заключается в том, что может привести к сбою процесса сериализации и кодирования php? Существуют ли определенные символы или виды данных в массиве объектов данных, которые могут привести к сбою сериализации?
Нужно ли выполнять некоторый массаж объекта данных, прежде чем я попытаюсь его сериализовать?
Edit:
Чтобы уточнить, процесс работает следующим образом
У меня есть клиентское приложение Flex / Actionscript, которое отправляет объекты ActionScript на основе AMF на сервер. На стороне PHP я использую библиотеку Zend AMF для чтения данных AMF. Объект может быть проверен в PHP и в основном выглядит как ассоциативный многомерный массив. Именно в этот момент я пытаюсь сериализовать и кодировать с помощью base 64 объект, чтобы сохранить объект в базе данных в виде закодированной строки.
Надеюсь, это имеет смысл. Проблема носит прерывистый характер и не так легко воспроизвести последовательно. Если я смогу получить некоторые конкретные сообщения об ошибках, я опубликую их здесь для дальнейшего разъяснения. Но сейчас мне просто интересно, каковы пределы сериализации, чтобы помочь мне в дальнейшей отладке.