Pregunta

Tengo pequeña clase llamada 'Call' y necesito para almacenar estas llamadas en un archivo plano. He hecho otra clase llamada 'CallStorage', que contiene una matriz donde pongo estas llamadas en.

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 ese conjunto.

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 he intentado serializar y escritura matrices que contienen cadenas simples. Yo no pude conseguir que el trabajo sea .. Tengo un fondo de Java, así que no puedo ver por qué no podía simplemente escribir una matriz en el disco si es serializado. :)

¿Fue útil?

Solución

En primer lugar, utilizar 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 descubrir dónde está el problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top