2010-04-21 22 views
5

Tengo una clase pequeña llamada 'Llamar' y necesito almacenar estas llamadas en un archivo plano. He hecho otra clase llamada 'CallStorage' que contiene una matriz en la que incluyo estas llamadas.php cómo serializar una matriz de objetos?

Mi problema es que me gustaría guardar esta matriz en el disco para que pudiera leerlo más adelante atrás y obtener las llamadas de esa matriz.

He tratado de conseguir esto utilizando serialize() y unserialize() pero estos parece actuar de alguna manera extraña y parte de la información se pierde.

Esto es lo que estoy haciendo:

//write array to disk 
$filename = $path . 'calls-' . $today; 
$serialized = serialize($this->array); 
$fp = fopen($filename, 'a'); 
fwrite($fp, $serialized); 
fclose($fp); 

//read array from serialized file 

$filename = $path . 'calls-' . $today; 
if (file_exists($filename)) { 
    $handle = fopen($filename, 'r'); 
    $contents = fread($handle, filesize($filename)); 
    fclose($handle); 
    $unserialized = unserialize($contents); 
    $this->setArray($unserialized); 
} 

Puede alguien ver lo que estoy haciendo mal, o qué. También intenté serializar y escribir arreglos que contengan cadenas simples. No conseguí que funcionara tampoco ... Tengo un fondo Java, así que no puedo ver por qué no podría simplemente escribir una matriz en el disco si se serializa. :)

Respuesta

6

En primer lugar, utilice las formas abreviadas:

file_put_contents($filepath,serialize($var)); 

y

$var=unserialize(file_get_contents($filepath)); 

Y entonces la salida/de depuración en cada etapa para encontrar dónde está el problema.

+0

Parece que el problema estaba en mis funciones de lectura y escritura. ¡Así que file_put_contents() y file_get_contents() resolvieron el problema y ahora la serialización funciona como esperaba! ¡Gracias! :) – hequ

Cuestiones relacionadas