2010-04-21 8 views
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)); 

그리고

출력/디버그 : :)

답변

6

는 첫째, 속기 형태를 사용합니다.

+0

내 읽기 및 쓰기 기능에 문제가있는 것 같습니다. 그래서 file_put_contents()와 file_get_contents()는 문제를 해결했으며, 지금 예상대로 직렬화 작업을합니다! 감사! :) – hequ

관련 문제