Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
Estou querendo serializar um objeto socket para armazená-lo no meu banco de dados MySQL.
Essa operação é possível? Se sim qual o melhor tipo de dados para armazenar o objeto nas condições acima?
Obrigado pelas respostas
Mas para voltar o teste não seria somente fazer o cast?
E qual o tipo de dados do MySQL é mais utilizado para guardar esse objeto serializado?
O PHP converte em String. Mas dependendo do conteúdo do objeto, você pode necessitar grandes blocos de texto. Recomendo o tipo TEXT
Quanto a questão do cast, se você precisar de algo mais customizável, acredito ser interessante esse seu objeto que será serializado implementar a interface Serializable
Assim, se após usar o unserialize( $obj ) o resultado não for do tipo que você espera, pode disparar um Exception para avisar, solucionar, contornar (talvez, recriando o objeto)...
Quanto ao tipo do MySQL deve ser um que armazene strings, o tamanho máximo vai depender da sua necessidade.
Se for um "micro-objeto", a string será pequena e, se tiver até 255 caracteres pode usar VARCHAR. Se tiver mais que isso, tem-se TEXT, LONGTEXT...
Minha idéia é serializar objetos socket para guardar na base de dados, não vai ser um objeto criado.
Vou fazer uns testes, serializar alguns sockets e ver qual o tamanho vai ficar
Posto aqui o resultado
Minha idéia é serializar objetos socket para guardar na base de dados, não vai ser um objeto criado.
resource não é serializável.
The value to be serialized. serialize() handles all types, except the resource -type. You can even serialize() arrays that contain references to itself. Circular references inside the array/object you are serializing will also be stored. Any other reference will be lost.
>
resource não é serializável.
>
The value to be serialized. serialize() handles all types, except the resource -type. You can even serialize() arrays that contain references to itself. Circular references inside the array/object you are serializing will also be stored. Any other reference will be lost.
Tecnicamente, um resource pode ser serializado.
O problema está no termo destacado, em azul.
Um resource, quando serializado retorna uma string representando um inteiro, o que significa que, quando desserializado, quem usar (função/método) receberá esse inteiro, ao invés de resource, gerando um Warning.
Você poderia utilizar http://php.net/serialize e http://www.php.net/manual/en/function.unserialize.php