Вопрос

У меня небольшой класс под названием «Call», и мне нужно хранить эти звонки в плоский файл. Я сделал другой класс под названием «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));

А затем вывод / отладка на каждом этапе, чтобы найти, где проблема.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top