各種web開發(fā)語言中,各個(gè)頁面之間基本都會(huì)進(jìn)行數(shù)據(jù)的傳遞,web開發(fā)里面比較常用的數(shù)據(jù)傳遞方式有g(shù)et
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的河間網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
post,一直以來我都只知道get傳遞的數(shù)據(jù)量要比post傳遞的數(shù)據(jù)量要少,所以傳遞大數(shù)據(jù)量還是要用post,但是 get post
這兩種方式最大能傳遞多少數(shù)據(jù)呢?一直沒搞清楚。
今天由于工作的需要,還必須得把這個(gè)問題搞明白一下了,下面就說說GET與POST傳遞數(shù)據(jù)的最大長度能夠達(dá)到多少吧。
get
是通過URL提交數(shù)據(jù),因此GET可提交的數(shù)據(jù)量就跟URL所能達(dá)到的最大長度有直接關(guān)系。很多文章都說GET方式提交的數(shù)據(jù)最多只能是1024字節(jié),而
實(shí)際上,URL不存在參數(shù)上限的問題,HTTP協(xié)議規(guī)范也沒有對(duì)URL長度進(jìn)行限制。這個(gè)限制是特定的瀏覽器及服務(wù)器對(duì)它的限制。IE對(duì)URL長度的限制
是2083字節(jié)(2K+35字節(jié))。對(duì)于其他瀏覽器,如FireFox,Netscape等,則沒有長度限制,這個(gè)時(shí)候其限制取決于服務(wù)器的操作系統(tǒng)。即
如果url太長,服務(wù)器可能會(huì)因?yàn)榘踩矫娴脑O(shè)置從而拒絕請(qǐng)求或者發(fā)生不完整的數(shù)據(jù)請(qǐng)求。
post
理論上講是沒有大小限制的,HTTP協(xié)議規(guī)范也沒有進(jìn)行大小限制,但實(shí)際上post所能傳遞的數(shù)據(jù)量大小取決于服務(wù)器的設(shè)置和內(nèi)存大小。因?yàn)槲覀円话?/p>
post的數(shù)據(jù)量很少超過MB的,所以我們很少能感覺的到post的數(shù)據(jù)量限制,但實(shí)際中如果你上傳文件的過程中可能會(huì)發(fā)現(xiàn)這樣一個(gè)問題,即上傳個(gè)頭比較
大的文件到服務(wù)器時(shí)候,可能上傳不上去,以php語言來說,查原因的時(shí)候你也許會(huì)看到有說PHP上傳文件涉及到的參數(shù)PHP默認(rèn)的上傳有限定,一般這個(gè)值是2MB,更改這個(gè)值需要更改php.conf的post_max_size這個(gè)值。這就很明白的說明了這個(gè)問題了。
修改PHP上傳文件大小限制的方法
1. 一般的文件上傳,除非文件很小.就像一個(gè)5M的文件,很可能要超過一分鐘才能上傳完.
但在php中,默認(rèn)的該頁最久執(zhí)行時(shí)間為 30 秒.就是說超過30秒,該腳本就停止執(zhí)行.
這就導(dǎo)致出現(xiàn) 無法打開網(wǎng)頁的情況.這時(shí)我們可以修改 max_execution_time
在php.ini里查找
max_execution_time
默認(rèn)是30秒.改為
max_execution_time = 0
0表示沒有限制
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
另外要說明的是,post_max_size 大于 upload_max_filesize 為佳.
Windows 環(huán)境下的修改方法
第一步:修改在php下POST文件大小的限制
1.用編輯器打開php.ini
找到:max_execution_time =30 ,這個(gè)是每個(gè)腳本運(yùn)行的最長時(shí)間,單位秒,修改為:
max_execution_time = 150
找到:max_input_time = 60,這是每個(gè)腳本可以消耗的時(shí)間,單位也是秒,修改為:
max_input_time = 300
找到:memory_limit = 128M,這個(gè)是腳本運(yùn)行最大消耗的內(nèi)存,根據(jù)你的需求更改數(shù)值,這里修改為:
memory_limit = 256M
找到:post_max_size = 8M,表單提交最大數(shù)據(jù)為8M,此項(xiàng)不是限制上傳單個(gè)文件的大小,而是針對(duì)整個(gè)表單的提交數(shù)據(jù)進(jìn)行限制的。限制范圍包括表單提交的所有內(nèi)容.例如:發(fā)表貼子時(shí),貼子標(biāo)題,內(nèi)容,附件等…這里修改為:
post_max_size = 20M
找到:upload_max_filesize = 2M ,上載文件的最大許可大小 ,修改為:
upload_max_filesize = 10M
第二步: Apache環(huán)境中的檔案上傳大小控制
修改位于Apahce目錄下的httpd.conf
添加下面內(nèi)容
LimitRequestBody10485760
即10M=10*1024*1024,有的文章中提到應(yīng)改為 600000000
重新啟動(dòng)apache,就可以在設(shè)置里看到你要的大小
Linux 環(huán)境下的修改方法
vim /etc/php.ini
找到 File Uploadsh區(qū)域修改以下幾個(gè)參數(shù): file_uploads = on;是否允許通過HTTP上傳文件的開關(guān)。默認(rèn)為ON即是開 upload_tmp_dir;文件上傳至服務(wù)器上存儲(chǔ)臨時(shí)文件的地方,如果沒指定就會(huì)用系統(tǒng)默認(rèn)的臨時(shí)文件夾(moodle可以不改)
upload_max_filesize = 8m ;允許上傳文件大小的最大值.
找到 Data Handling區(qū)域,修改 post_max_size = 8m;指通過表單POST給PHP的所能接收的最大值,包括表單里的所有值。默認(rèn)為8M
設(shè)上述四個(gè)參數(shù)后,上傳小于8M的文件一般不成問題。但如果上傳大于8M的文件,只還得設(shè)置以下參數(shù):
在Resource Limits 區(qū)域: max_execution_time = 600;每個(gè)PHP頁面運(yùn)行的最大時(shí)間值(秒),默認(rèn)30秒 max_input_time = 600;每個(gè)PHP頁面接收數(shù)據(jù)所需的最大時(shí)間,默認(rèn)60秒 memory_limit = 8m;每個(gè)PHP頁面所吃掉的最大內(nèi)存,默認(rèn)8M