5

「Call」という小さなクラスがあり、これらの呼び出しをフラットファイルに保存する必要があります。これらの呼び出しを入れる配列を含む「CallStorage」という別のクラスを作成しました。

私の問題は、この配列をディスクに保存して、後でそれを読み戻し、その配列から呼び出しを取得できるようにすることです。

私はserialize()とunserialize()を使用してこれを達成しようとしましたが、これらはどういうわけか奇妙に動作するようで、情報の一部が失われます。

これは私がしていることです:

//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のバックグラウンドを持っているので、シリアル化されている場合に配列をディスクに書き込むことができなかった理由がわかりません。:)

4

1 に答える 1

6

まず、省略形を使用します。

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

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

次に、各段階で出力/デバッグして、問題がどこにあるかを見つけます。

于 2010-04-21T18:46:36.600 に答える