Question

J'ai petite classe appelée « appel » et je dois stocker ces appels dans un fichier plat. Je l'ai fait une autre classe appelée « CallStorage » qui contient un tableau où je mets ces appels dans.

Mon problème est que je voudrais stocker ce tableau sur le disque que je puisse lire plus tard en arrière et obtenir les appels de ce tableau.

J'ai essayé d'y parvenir en utilisant serialize () et unserialize () mais ceux-ci semble agir d'une certaine manière étrange et une partie de l'information se perd.

Voici ce que je fais:

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

Quelqu'un peut-il voir ce que je fais mal, ou quoi. J'ai aussi essayé de tableaux de sérialisation et d'écriture qui contient des chaînes simples. Je ne l'ai pas réussi à obtenir que le travail soit .. J'ai un langage Java, donc je ne peux pas voir pourquoi je ne pouvais pas écrire un tableau sur le disque si elle est sérialisé. :)

Était-ce utile?

La solution

Tout d'abord, utiliser les formes raccourcies:

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

et

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

Et puis sortie / debug à chaque étape pour trouver où le problème est.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top