2010-04-21 46 views
5

Tôi có một lớp nhỏ gọi là 'Gọi' và tôi cần lưu các cuộc gọi này vào một tệp phẳng. Tôi đã tạo một lớp khác gọi là 'CallStorage' chứa một mảng mà tôi đặt các cuộc gọi này vào.php làm thế nào để sắp xếp từng mảng các đối tượng?

Vấn đề của tôi là tôi muốn lưu mảng này vào đĩa để sau này tôi có thể đọc lại và nhận các cuộc gọi từ mảng đó.

Tôi đã cố gắng để đạt được điều này bằng cách sử dụng serialize() và unserialize() nhưng chúng dường như hành động bằng cách nào đó lạ và một phần thông tin bị mất.

Đây là những gì tôi đang làm:

//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); 
} 

Ai đó có thể thấy những gì tôi đang làm sai, hoặc những gì. Tôi cũng đã cố gắng tuần tự hóa và viết các mảng có chứa các chuỗi đơn giản. Tôi đã không quản lý để có được rằng làm việc, hoặc .. Tôi có một nền Java vì vậy tôi chỉ không thể nhìn thấy lý do tại sao tôi không thể chỉ cần viết một mảng vào đĩa nếu nó serialized. :)

Trả lời

6

Thứ nhất, sử dụng các hình thức viết tắt:

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

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

Và sau đó sản lượng/debug ở từng giai đoạn để tìm nơi mà vấn đề là.

+0

Dường như vấn đề nằm trong chức năng đọc và viết của tôi. Vì vậy, file_put_contents() và file_get_contents() đã giải quyết được vấn đề và bây giờ việc serializing hoạt động như tôi mong đợi! Cảm ơn! :) – hequ

Các vấn đề liên quan