У меня есть маленький класс под названием 'Вызов', и я должен сохранить эти вызовы в плоский файл. Я сделал другой класс под названием 'CallStorage', который содержит массив, куда я поместил эти вызовы в.
Моя проблема состоит в том, что я хотел бы сохранить этот массив к диску, таким образом, я мог позже считать его назад и получить вызовы от того массива.
Я попытался достигнуть этого использования, сериализируют () и не сериализируют (), но они, кажется, действуют так или иначе странные, и часть информации теряется.
Это - то, что я делаю:
//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);
}
Может кто-то видеть то, что я делаю неправильно, или что. Я также попытался сериализировать и записать массивы, который содержит простые строки. Мне не удалось получить ту работу также.. У меня есть фон Java, таким образом, я просто не вижу, почему я не мог только записать массив в диск, если он сериализируется.:)
Во-первых, используйте сокращенные формы:
file_put_contents($filepath,serialize($var));
и
$var=unserialize(file_get_contents($filepath));
А затем выведите / отлаживайте на каждом этапе, чтобы найти причину проблемы.