2011-08-25 28 views
13

sự khác biệt giữasự khác biệt giữa đào tạo Quản lý và fread là gì

$contents = file_get_contents("folder/somefile.txt") 

$handle = fopen("folder/somefile.txt", "r"); 
$contents = fread($handle, filesize($filename)); 
fclose($handle); 

về hiệu suất, xử lý con trỏ tập tin và bộ nhớ quản lý là gì?

Và có đúng là file_get_contents sử dụng mmap nếu hệ điều hành cho phép không?

Trả lời

4

fread() đọc dữ liệu nhị phân, file_get_contents() trả về dữ liệu dưới dạng chuỗi.

+0

Tôi so sánh hai mã lệnh, và tôi cũng thích bạn quản lý 'hiệu suất, xử lý con trỏ tệp và quản lý bộ nhớ ' –

+6

Sai - với' fread() 'bạn nên mở tệp bằng cờ' b' đảm bảo rằng nó an toàn nhị phân, trong khi 'file_get_contents()' luôn an toàn nhị phân – Crack

+0

Tôi thích nhận xét của bạn @Crack. Bằng cách trả lời tốt đẹp bởi tổ chức – NullPointer

5

fread có giới hạn về số lượng ký tự bạn có thể đọc và tốt hơn để phân tích cú pháp dữ liệu.

file_get_contents không có giới hạn về đầu vào (mà tôi biết). Điều này được sử dụng để truy cập API bên ngoài và như vậy.

+0

đúng là tôi đang gặp vấn đề với 'fread'. Nó đã cắt xén các ký tự của dữ liệu tuần tự hóa trong khi đọc từ tập tin. – NullPointer

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