第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

PHP中輸出文件,怎么區(qū)別什么時(shí)候該用readfile() , fread(), file_get_contents(), fgets()?

PHP中輸出文件,怎么區(qū)別什么時(shí)候該用readfile() , fread(), file_get_contents(), fgets()?

慕工程0101907 2019-04-13 08:45:50
我在服務(wù)器端(Apache環(huán)境)上放了一個(gè)安卓apk安裝包的下載鏈接,使用readfile()讀取apk文件輸出下載后,手機(jī)安裝apk顯示解析包錯(cuò)誤。但apk本身沒(méi)問(wèn)題,下載后文件的大小也是完整的。服務(wù)器mime也設(shè)置了。后來(lái)?yè)Q用fread()后輸出就好了。不明白是為什么。搜索了一下沒(méi)遇到解釋的很清楚的,有說(shuō)是因?yàn)椤笇?duì)二進(jìn)制友好」,有這么一說(shuō)嗎?包括還有file_get_contents(),fgets()等另外的幾個(gè)文件讀取函數(shù)和方法,一直都不能很好的分清什么時(shí)候該用哪個(gè)。除了手冊(cè)之外,有沒(méi)有一些有應(yīng)用場(chǎng)景的好的介紹文章?補(bǔ)上前后的代碼:readfile():header("Content-type:application/vnd.android.package-archive");header("Accept-Ranges:bytes");header("Accept-Length:".$filesize);header("Content-Disposition:attachment;filename=".$name);readfile($file);fread():header("Content-type:application/vnd.android.package-archive");header("Accept-Ranges:bytes");header("Accept-Length:".$filesize);header("Content-Disposition:attachment;filename=".$name);$handle=fopen($file,"r");echofread($handle,$filesize);fclose($handle);
查看完整描述

2 回答

?
阿波羅的戰(zhàn)車(chē)

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊

如果是直接寫(xiě)入或讀取全部直接用file_get_contents()file_put_contents()更方便
fread可以讀取指定大小,讀取指定行等等,還能鎖定文件功能比較強(qiáng)
以下是readfile手冊(cè)中的解釋?zhuān)?pre>readfile()函數(shù)輸出一個(gè)文件。
該函數(shù)讀入一個(gè)文件并寫(xiě)入到輸出緩沖。若成功,則返回從文件中讀入的字節(jié)數(shù)若失敗,則返回false,這個(gè)函數(shù)會(huì)在文檔最后輸出字節(jié)數(shù)。
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-13
?
德瑪西亞99

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊

fread()和readfile()fread()最大一次性能讀取8k長(zhǎng)度的字節(jié)數(shù),所以不能一次性讀取大文件去作下載。優(yōu)勢(shì)在于,操作更加靈活,每次讀取指定字節(jié)的內(nèi)容,用于下載時(shí)方便控制服務(wù)器的流量。readfile()優(yōu)勢(shì)是能夠一次性讀取大文件;不需要PHP預(yù)讀到內(nèi)存,下載速度更快,直接把文件的處理交由服務(wù)器。缺點(diǎn)就是不能控制負(fù)載。所以它是沒(méi)有內(nèi)存限制的,如果遇到報(bào)內(nèi)存錯(cuò)誤,先調(diào)用ob_end_flush()之類(lèi)的函數(shù)關(guān)閉緩沖區(qū)。
file_get_contents也是沒(méi)readfile()快,因?yàn)橐彩亲吡藀hp的內(nèi)存。但是在讀取小文本內(nèi)容到字符串變量時(shí),這個(gè)函數(shù)最適合使用,簡(jiǎn)單,更快。
fgets()是一次讀取文件中的一行了,再需要逐行處理文件的時(shí)候,使用這個(gè)
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-13
  • 2 回答
  • 0 關(guān)注
  • 1105 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)