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