5
나는 'Call'이라고 불리는 작은 클래스를 가지고 있으며 이러한 호출을 플랫 파일에 저장해야합니다. 나는 CallStorage라는 또 다른 클래스를 만들었는데, 여기에는이 호출을 넣는 배열이 들어 있습니다.PHP 개체의 배열을 직렬화하는 방법?
제 문제는 나중에이 배열을 디스크에 저장하여 나중에 다시 읽고 해당 배열에서 호출을받을 수 있다는 것입니다.
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);
}
누군가가 내가 잘못하고, 또는 무엇을하고있는 무슨을 볼 수 있습니다. 또한 일반 문자열이 포함 된 배열을 직렬화하고 작성하려고했습니다. 그 중 하나를 작동시키지 못했습니다. 자바 배경이있어서 직렬화 된 경우 디스크에 배열을 쓸 수없는 이유를 알 수 없습니다. 문제가 어디 있는지 찾기 위해 각 단계에서
file_put_contents($filepath,serialize($var));
다음
$var=unserialize(file_get_contents($filepath));
그리고
출력/디버그 : :)
내 읽기 및 쓰기 기능에 문제가있는 것 같습니다. 그래서 file_put_contents()와 file_get_contents()는 문제를 해결했으며, 지금 예상대로 직렬화 작업을합니다! 감사! :) – hequ