真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PHP記錄請(qǐng)求數(shù)據(jù)包大小 php 獲取文件大小

php 讀取zip包的大???

function?get_zip_originalsize($filename)?{????

創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作與策劃設(shè)計(jì),平和網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:平和等地區(qū)。平和做網(wǎng)站價(jià)格咨詢:13518219792

$size?=?0;????

$resource?=?zip_open($filename);????

while?($dir_resource?=?zip_read($resource))?{????????

$size?+=?zip_entry_filesize($dir_resource);????}????

zip_close($resource);????return?$size;}

$size?=?get_zip_originalsize('file.zip');

echo?"original?size:?$size?bytes\n";

如何設(shè)置php上傳文件大小限制

修改PHP上傳文件大小限制的方法

1. 一般的文件上傳,除非文件很小.就像一個(gè)5M的文件,很可能要超過(guò)一分鐘才能上傳完.

但在php中,默認(rèn)的該頁(yè)最久執(zhí)行時(shí)間為 30 秒.就是說(shuō)超過(guò)30秒,該腳本就停止執(zhí)行.

這就導(dǎo)致出現(xiàn) 無(wú)法打開(kāi)網(wǎng)頁(yè)的情況.這時(shí)我們可以修改 max_execution_time

在php.ini里查找

max_execution_time

默認(rèn)是30秒.改為

max_execution_time = 0

0表示沒(méi)有限制

2. 修改 post_max_size 設(shè)定 POST 數(shù)據(jù)所允許的最大大小。此設(shè)定也影響到文件上傳。

php默認(rèn)的post_max_size 為2M.如果 POST 數(shù)據(jù)尺寸大于 post_max_size $_POST 和 $_FILES superglobals 便會(huì)為空.

查找 post_max_size .改為

post_max_size = 150M

3. 很多人都會(huì)改了第二步.但上傳文件時(shí)最大仍然為 8M.

為什么呢.我們還要改一個(gè)參數(shù)upload_max_filesize 表示所上傳的文件的最大大小。

查找upload_max_filesize,默認(rèn)為8M改為

upload_max_filesize = 100M

另外要說(shuō)明的是,post_max_size 大于 upload_max_filesize 為佳.

數(shù)據(jù)包大小的問(wèn)題,請(qǐng)教!

以太網(wǎng)的數(shù)據(jù)包大小范圍正常情況下是64—1518字節(jié)之間。處于正常通訊的網(wǎng)絡(luò)中,數(shù)據(jù)包大小應(yīng)該是在幾百字節(jié)。你的網(wǎng)絡(luò)中1518字節(jié)的數(shù)據(jù)包占到了92%,說(shuō)明說(shuō)明網(wǎng)絡(luò)中肯定有下載行為,你可以看一下主機(jī)的流量是否偏大。

或者你可以參考一下這篇文章,網(wǎng)絡(luò)中的超大幀:

(),相信會(huì)對(duì)你有幫助。

php檢測(cè)上傳文件大小的問(wèn)題

在用PHP進(jìn)行文件上傳的操作中,需要知道怎么控制上傳文件大小的設(shè)置,而文件可傳大小是受到多種因素制約的,現(xiàn)總結(jié)如下:

1、php.ini:upload_max_filesize 所上傳的文件的最大大小。默認(rèn)值2M。

2、php.ini:memory_limit 本指令設(shè)定了一個(gè)腳本所能夠申請(qǐng)到的最大內(nèi)存字節(jié)數(shù),默認(rèn)值8M。如果不需要任何內(nèi)存上的限制,必須將其設(shè)為 -1。如果內(nèi)存不夠,則可能出現(xiàn)錯(cuò)誤:Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)

3、php.ini:post_max_size 設(shè)定POST數(shù)據(jù)所允許的最大大小。此設(shè)定也影響到文件上傳。要上傳大文件,該值必須大于 upload_max_filesize。

4、php.ini:max_execution_time = 30 ; Maximum execution time of each script, in seconds

5、php.ini:max_input_time = 60 ; Maximum amount of time each script may spend parsing request data

6、如果用到mysql的BLOB進(jìn)行二進(jìn)制文件存儲(chǔ),則需要設(shè)置my.ini:max_allowed_packet=xxM

7、httpd.conf

在 Apache 里面有一個(gè)選項(xiàng)是 LimitRequestBody,這個(gè)選項(xiàng)可以限制用戶送出的 HTTP 請(qǐng)求內(nèi)容。這個(gè)選項(xiàng)可以在 .htaccess 或 httpd.conf 里使用,而如果在 httpd.conf 內(nèi)使用,分別可以用在 virtualhost 或目錄屬性設(shè)定。而 LimitRequestBody 的設(shè)定值是介乎 0 (無(wú)限制) 至 2147483647 (2GB)。

例如要在目錄 D:/AppServ/www 設(shè)定上傳限制為 100K,可以在 .htaccess 或 httpd.conf 加入以下語(yǔ)句:

LimitRequestBody 1024000000

Options Indexes FollowSymLinks MultiViews ExecCGI

AllowOverride All

Order allow,deny

Allow from all

LimitRequestBody 1024000000Options Indexes FollowSymLinks MultiViews ExecCGIAllowOverride AllOrder allow,denyAllow from all

如果透過(guò) .htaccess 設(shè)定,儲(chǔ)存檔案后會(huì)立即生效;如透過(guò) httpd.conf 設(shè)定,須要重新啟動(dòng) Apache。

PHP關(guān)于文件上傳部分,特別提到表單隱藏域:MAX_FILE_SIZE,意思是接收文件的最大尺寸。文檔中給出的例子如下:

form enctype="multipart/form-data" action="_URL_" method="POST"

input type="hidden" name="MAX_FILE_SIZE" value="30000"

Send this file: input name="userfile" type="file"

input type="submit" value="Send File"

form

Send this file:

這里設(shè)置MAX_FILE_SIZE = 30000,期待一種可能,使得瀏覽器在傳送文件之前能夠依此作出預(yù)先判斷,如果文件尺寸大于30000字節(jié),則不執(zhí)行實(shí)際的POST動(dòng)作。也就是不往服務(wù)器發(fā)送文件內(nèi)容,而是直接在客戶端提醒用戶“你試圖上傳的文件超過(guò)30000字節(jié)”。

這的確是一個(gè)非常棒的主張,但在現(xiàn)實(shí)中卻暫時(shí)無(wú)法實(shí)現(xiàn)。不是因?yàn)檫@個(gè)限制可以“被簡(jiǎn)單地繞過(guò)”,而是IE和FireFox這兩個(gè)主流瀏覽器都不支持這個(gè)特性。PHP的這個(gè)建議尚未被采納。

MAX_FILE_SIZE還有一個(gè)用場(chǎng):后臺(tái)PHP會(huì)判斷接收到的文件大小是否大于這個(gè)值,如果超出,$_FILES['thisfile']['error']會(huì)被設(shè)置為UPLOAD_ERR_FORM_SIZE(2),同時(shí)放棄保存臨時(shí)文件,將$_FILES['thisfile']['size']置0。

這個(gè)例子,沒(méi)問(wèn)題,表現(xiàn)正常,當(dāng)我試圖上傳一個(gè)40多K的文件時(shí),PHP程序報(bào)告“文件超過(guò)MAX_FILE_SIZE”。

但是,如果我們將表單中的MAX_FILE_SIZE從30000減少到1000,情形又如何呢?

上傳800字節(jié)的文件,正常;

上傳40K的文件,PHP報(bào)告文件過(guò)大,也正常;

上傳3000個(gè)字節(jié)的文件,PHP未報(bào)告錯(cuò)誤,它成功保存了文件!出乎意料!

問(wèn)題就出在main/rfc1867.c中判斷文件是否超長(zhǎng)的這部分代碼上。php每次從buffer中讀取FILLUNIT字節(jié)長(zhǎng)度的內(nèi)容后,首先判斷“已經(jīng)讀到的內(nèi)容長(zhǎng)度(total_bytes)”是否大于MAX_FILE_SIZE,然后再增加“已經(jīng)讀到的內(nèi)容長(zhǎng)度(total_bytes)”。這樣一來(lái),和預(yù)計(jì)的結(jié)果之間至多會(huì)有FILLUNIT字節(jié)的誤差,而FILLUNIT=1024*5=5K。(點(diǎn)擊bug了解詳細(xì)內(nèi)容)

這就是說(shuō),當(dāng)MAX_FILE_SIZE5K時(shí),上傳一個(gè)大于MAX_FILE_SIZE,但是小于5K的文件是沒(méi)有問(wèn)題的。

當(dāng)然,因?yàn)檫@個(gè)設(shè)置很容易被繞過(guò),所以服務(wù)器端編程不應(yīng)當(dāng)依賴于MAX_FILE_SIZE。而且,5K到底是個(gè)很小的數(shù)值,對(duì)大多數(shù)上傳文件的表單來(lái)說(shuō)沒(méi)有影響。

PHP中post_max_size,upload_max_filesize, MAX_FILE_SIZE的設(shè)置,和客戶端上傳給服務(wù)器端的流量大小無(wú)關(guān)。

Apache服務(wù)器從客戶端接收長(zhǎng)度不超過(guò)LimitRequestBody字節(jié)數(shù)的請(qǐng)求,然后傳送給php模塊,php模塊再?zèng)Q定是否保存成臨時(shí)文件,設(shè)置$_FILES全局變量,移交給script進(jìn)一步處理。

這個(gè)Apache的LimitRequestBody選項(xiàng)缺省值=0,允許Request body的最大字節(jié)數(shù)是2G(Linux + Apache)

最后還要注意的是:

html本身能夠post數(shù)據(jù)也是有限制的,不能超過(guò)2G。

FTP客戶端有文件偏移指針的2GB邊界限制,未使用特殊編譯flag編譯的ftp服務(wù)器端或者客戶端,無(wú)論在什么FS中都不支持大于2GB的文件。不知道PHP會(huì)不會(huì)也有這種情況。

php://input 和 php://output

$data = file_get_contents("php://input");

php://input 是個(gè)可以訪問(wèn)請(qǐng)求的原始數(shù)據(jù)的只讀流。 POST 請(qǐng)求的情況下,最好使用 php://input 來(lái)代替 $HTTP_RAW_POST_DATA,因?yàn)樗灰蕾囉谔囟ǖ?php.ini 指令。 而且,這樣的情況下 $HTTP_RAW_POST_DATA 默認(rèn)沒(méi)有填充, 比激活 always_populate_raw_post_data 潛在需要更少的內(nèi)存。 enctype="multipart/form-data" 的時(shí)候 php://input 是無(wú)效的。

1, php://input 可以讀取http entity body中指定長(zhǎng)度的值,由Content-Length指定長(zhǎng)度,不管是POST方式或者GET方法提交過(guò)來(lái)的數(shù)據(jù)。但是,一般GET方法提交數(shù)據(jù) 時(shí),http request entity body部分都為空。

2,php://input 與$HTTP_RAW_POST_DATA讀取的數(shù)據(jù)是一樣的,都只讀取Content-Type不為multipart/form-data的數(shù)據(jù)。

3,Coentent-Type僅在取值為application/x-www-data-urlencoded和multipart/form-data兩種情況下,PHP才會(huì)將http請(qǐng)求數(shù)據(jù)包中相應(yīng)的數(shù)據(jù)填入全局變量$_POST

4,PHP不能識(shí)別的Content-Type類型的時(shí)候,會(huì)將http請(qǐng)求包中相應(yīng)的數(shù)據(jù)填入變量$HTTP_RAW_POST_DATA

5, 只有Coentent-Type為multipart/form-data的時(shí)候,PHP不會(huì)將http請(qǐng)求數(shù)據(jù)包中的相應(yīng)數(shù)據(jù)填入php://input,否則其它情況都會(huì)。填入的長(zhǎng)度,由Coentent-Length指定。

6,只有Content-Type為application/x-www-data-urlencoded時(shí),php://input數(shù)據(jù)才跟$_POST數(shù)據(jù)相一致。

7,php://input數(shù)據(jù)總是跟$HTTP_RAW_POST_DATA相同,但是php://input比$HTTP_RAW_POST_DATA更湊效,且不需要特殊設(shè)置php.ini

8,PHP會(huì)將PATH字段的query_path部分,填入全局變量$_GET。通常情況下,GET方法提交的http請(qǐng)求,body為空。


分享題目:PHP記錄請(qǐng)求數(shù)據(jù)包大小 php 獲取文件大小
文章路徑:http://weahome.cn/article/hidsgd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部