Pergunta

Eu tenho uma grande matriz 2d que eu serializar e base64_encode e lance numa base de dados. Em uma página diferente eu puxar a matriz fora e quando eu base64_decode a matriz serializada posso eco-lo para fora e ele definitivamente parece válido.

No entanto, se eu tentar unserialize(base64_decode($serializedArray)) ele só lança o mesmo erro ao ponto de quase cair Firefox.

O erro é:

Atenção: unserialize() [function.unserialize]: Nó não existe mais no /var/www/dev/wc_paul/inc/analyzerTester.php na linha 24

Eu incluiria toda a matriz serializada que ecoam fora, mas última vez que tentei que, nesta forma ele caiu meu Firefox.

Alguém tem alguma idéia de por que isso pode estar acontecendo?

Foi útil?

Solução

Tem certeza de que estamos apenas a serialização de uma matriz e não um objeto (por exemplo DOMNode?) Como recursos, nem todas as classes estão indo para ser feliz com ser desserializado. Como exemplo com o DOM (que o seu erro sugere-me que você está trabalhando), cada nó tem uma referência para o parentNode, e se o parentNode não existe no momento um nó for desserializado, não é capaz de recriar essa referência e os problemas decorrentes.

Gostaria de sugerir salvar a árvore dom como XML para o banco de dados e carregá-lo de volta mais tarde.

Outras dicas

Certifique-se de que o campo de banco de dados é grande o suficiente para manter a matriz serializada. dados serializados é muito espaço-ineficiente em PHP, e muitos bancos de dados (como o MySQL) vai valores de campo silenciosamente Truncar que são muito longos.

Que tipo de elementos são na sua matriz? serialize / unserialize não funciona com built-in PHP objetos, e que é geralmente a causa desse erro.

Além disso, com base no seu comentário este não é o seu problema, mas para economizar espaço em seu banco de dados não codificam base64 os dados, apenas escapar. ou seja, para uso mysql mysql_real_escape_string.

Certifique-se de fazer os recursos não serialize, eles não podem ser serializados.

Resources@php.net

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top