Domanda

Ho piccola classe chiamata 'Call' e ho bisogno di memorizzare queste chiamate in un file flat. Ho fatto un'altra classe chiamata 'CallStorage', che contiene un array in cui ho messo queste chiamate in.

Il mio problema è che vorrei per memorizzare questo array su disco in modo da poter poi leggere di nuovo e ottenere le chiamate da tale matrice.

ho cercato di farlo con serialize () e unserialize (), ma questi sembra agire in qualche modo strano e parte delle informazioni si perde.

Questo è quello che sto facendo:

//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);
}

Qualcuno può vedere quello che sto facendo male, o che cosa. Ho anche provato a serializzare e array di scrittura che contiene le stringhe semplici. Non sono riuscito a ottenere che il lavoro sia .. Ho una formazione Java quindi non riesco proprio a capire perché non ho potuto solo scrivere un array per dischi se è serializzato. :)

È stato utile?

Soluzione

In primo luogo, utilizzare i moduli di stenografia:

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

e

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

E poi uscita / debug in ogni fase per trovare dove sia il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top