fread() 和 readfile()
fread() 最大一次性能讀取 8k長度的字節數,所以不能一次性讀取大文件去作下載。 優勢在於,操作更加靈活,每次讀取指定字節的內容,用於下載時方便控制服務器的流量。
readfile() 優勢是能夠一次性讀取大文件;不需要PHP預讀到內存,下載速度更快,直接把文件的處理交由服務器。缺點就是不能控制負載。所以它是沒有內存限制的,如果遇到報內存錯誤,先調用 ob_end_flush()之類的函數關閉緩沖區。
file_get_contents 也是沒 readfile()快, 因為也是走了php的內存。但是在讀取小文本內容到字符串變量時,這個函數最適合使用,簡單,更快。
fgets() 是一次讀取文件中的一行了,再需要逐行處理文件的時候,使用這個