Frage

Ich habe ein großes 2D-Array, das ich serialisiert und base64_encode und werfe in eine Datenbank. Auf einer anderen Seite ziehe ich das Array aus, und wenn ich die serialisierte Array base64_decode kann ich es Echo aus und es sieht auf jeden Fall gültig.

Allerdings, wenn ich versuche, es zu unserialize(base64_decode($serializedArray)) wirft nur den gleichen Fehler auf den Punkt von Firefox fast abstürzt.

Der Fehler ist:

  

Achtung: unserialize() [function.unserialize]: Knoten nicht mehr existiert in /var/www/dev/wc_paul/inc/analyzerTester.php auf der Leitung 24

würde ich die ganze serialisierten Array enthalten, die ich echo, aber letzte Mal habe ich versucht, dass es auf diesem Formular mein Firefox abgestürzt ist.

Hat jemand eine Idee, warum dies geschieht könnte?

War es hilfreich?

Lösung

Sind Sie sicher, dass Sie nur ein Array Serialisierung, und nicht ein Objekt (z DOMNode?) Wie Ressourcen, die nicht alle Klassen glücklich sein werden mit unserialisierten zu sein. Als ein Beispiel mit dem DOM (was Ihr Fehler mir schlägt mit dem Sie arbeiten), hat jeder Knoten einen Verweis auf die parentNode, und wenn die parentNode zur Zeit nicht existiert ein Knoten unserialisierten wird, ist es nicht in der Lage neu, dass der Bezug und Probleme ergeben.

Ich würde vorschlagen, den DOM-Baum als XML in der Datenbank speichern und sie später wieder geladen werden.

Andere Tipps

Stellen Sie sicher, dass das Datenbankfeld groß genug ist, um die serialisierten Array zu halten. Serialisierten Daten ist sehr platz ineffizient in PHP, und viele DBs (wie MySQL) wird leise Feldwerte gestutzt, die zu lang sind.

Welche Art von Elementen im Array ist? Serialisierung / unserialize nicht mit integrierten PHP-Objekten funktioniert, und das ist in der Regel die Ursache für diesen Fehler.

Auch basierend auf Ihrem Kommentar ist dies nicht Ihr Problem, aber Speicherplatz in Ihrer Datenbank speichern die Daten nicht base64 kodieren, nur entkommen sie. das heißt für mysql Verwendung mysql_real_escape_string.

Stellen Sie sicher, dass Sie keine Ressourcen serialisiert werden, können sie nicht serialisiert werden.

Resources@php.net

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top