PHP unserialize продолжает бросать одну и ту же ошибку более 100 раз

У меня есть большой массив 2d, который я сериализую и base64_encode, и бросаю в базу данных. На другой странице я вытаскиваю массив, и когда я base64_decode сериализованный массив, я могу повторить его, и он определенно выглядит действительным.

Тем не менее, если я пытаюсь выполнить unserialize(base64_decode($serializedArray)) он просто бросает ту же ошибку до точки почти сбой Firefox.

Ошибка:

Предупреждение: unserialize() [function.unserialize]: Узел больше не существует в /var/www/dev/wc_paul/inc/analyzerTester.php в строке 24

Я бы включил весь сериализованный массив, который я повторяю, но в прошлый раз, когда я попробовал, в этой форме он разбил мой Firefox.

Кто-нибудь знает, почему это может произойти?

Вы уверены, что вы просто сериализуете массив, а не объект (например, DOMNode?). Подобно ресурсам, не все классы будут довольны несериализацией. В качестве примера с DOM (с вашей ошибкой указывает на то, с чем вы работаете) каждый узел имеет ссылку на parentNode, и если parentNode не существует в тот момент, когда узел не является несериализованным, он не может воссоздать эту ссылку и проблемы.

Я бы предложил сохранить дерево dom как XML в базу данных и загрузить его позже.

Убедитесь, что поле базы данных достаточно велико, чтобы хранить сериализованный массив. Сериализованные данные очень неэффективны в PHP, и многие БД (например, MySQL) будут молча усекать значения полей, которые слишком велики.

Какие типы элементов находятся в вашем массиве? serialize / unserialize не работает со встроенными объектами PHP, и это обычно является причиной этой ошибки.

Кроме того, на основе вашего комментария это не ваша проблема, но для экономии места в вашей базе данных не кодируйте данные base64, просто избегайте его. т.е. для mysql используйте mysql_real_escape_string.

Убедитесь, что вы не сериализуете ресурсы, они не могут быть сериализованы.

Resources@php.net