重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
各种web开发语言中,各个页面之间基本都会进行数据的传递,web开发里面比较常用的数据传递方式有get
创新互联公司是一家集网站建设,西岗企业网站建设,西岗品牌网站建设,网站定制,西岗网站建设报价,网络营销,网络优化,西岗网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
post,一直以来我都只知道get传递的数据量要比post传递的数据量要少,所以传递大数据量还是要用post,但是 get post
这两种方式最大能传递多少数据呢?一直没搞清楚。
今天由于工作的需要,还必须得把这个问题搞明白一下了,下面就说说GET与POST传递数据的最大长度能够达到多少吧。
get
是通过URL提交数据,因此GET可提交的数据量就跟URL所能达到的最大长度有直接关系。很多文章都说GET方式提交的数据最多只能是1024字节,而
实际上,URL不存在参数上限的问题,HTTP协议规范也没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制
是2083字节(2K+35字节)。对于其他浏览器,如FireFox,Netscape等,则没有长度限制,这个时候其限制取决于服务器的操作系统。即
如果url太长,服务器可能会因为安全方面的设置从而拒绝请求或者发生不完整的数据请求。
post
理论上讲是没有大小限制的,HTTP协议规范也没有进行大小限制,但实际上post所能传递的数据量大小取决于服务器的设置和内存大小。因为我们一般
post的数据量很少超过MB的,所以我们很少能感觉的到post的数据量限制,但实际中如果你上传文件的过程中可能会发现这样一个问题,即上传个头比较
大的文件到服务器时候,可能上传不上去,以php语言来说,查原因的时候你也许会看到有说PHP上传文件涉及到的参数PHP默认的上传有限定,一般这个值是2MB,更改这个值需要更改php.conf的post_max_size这个值。这就很明白的说明了这个问题了。
mysql_query函数查询的方式是查询出全部结果后缓存到内存中,这样就会出现超内存的现象,使用另外一个函数mysql_unbuffered_query可以解决这个问题,mysql_unbuffered_query不会缓存结果集,而是查询出来数据后立马对结果集进行操作,也就是便查询边返回,这样就不会出现超出内存的现象,但是使用mysql_unbuffered_query的是时候不能使用 mysql_num_rows() 和 mysql_data_seek()。并且向 MySQL 发送一条新的 SQL 查询之前,必须提取掉所有未缓存的 SQL 查询所产生的结果行。
解决方法如下:
(1)修改php.ini适用自己有服务器的人
大多数都修改php.ini中的upload_max_filesize,但修改了这个以后,还是提示这个问题;
那么更改如下几处:
修改 PHP.ini
file_uploads on 是否允许通过HTTP上传文件的开关。默认为ON即是开
upload_tmp_dir 文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
upload_max_filesize 20m 望文生意,即允许上传文件大小的最大值。默认为2M
post_max_size 30m 指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M
说明
一般地,设置好上述四个参数后,在网络正常的情况下,上传=8M的文件是不成问题
但如果要上传8M的大体积文件,只设置上述四项还一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得继续设置下面的参数。
max_execution_time 300 每个PHP页面运行的最大时间值(秒),默认30秒
max_input_time 300 每个PHP页面接收数据所需的最大时间,默认60秒
memory_limit 128m 每个PHP页面所吃掉的最大内存,默认8M
设定 POST 数据所允许的最大大小。此设定也影响到文件上传。要上传大文件,该值必须大于 upload_max_filesize。
如果配置脚本中激活了内存限制,memory_limit 也会影响文件上传。通常说,memory_limit 应该比 post_max_size 要大。
(2)这个方法很简单,不需要修改php.ini参数, 适用把站放在虚拟主机的人。
打开phpMyAdmin目录下的配置文件:config.inc.php
请注意其中的这两个参数:
$cfg['UploadDir'] = ‘A‘;
$cfg['SaveDir'] = ‘B‘;
在phpMyAdmin目录下自行建立文件夹A和B来对应UploadDir(导入目录)和SaveDir(导出目录)。
导出操作:
1、登陆phpMyAdmin
2、在左侧选中你需要备份导出的数据库
3、在右侧窗口中找到“导出”
4、在右侧窗口底部选择“保存于服务器的 B/ 目录”
5、选择压缩模式,提交“执行”即可在B文件夹中找到该数据库的导出数据。
导入操作:
1、上传准备导入的数据文件到A目录
2、登陆phpMyAdmin
3、在左侧选中你需要备份导出的数据库
4、在右侧窗口中找到“Import”(导出)
5、在右侧窗口“网站服务器上载目录”中选择需要导入的数据文件,提交“执行”完成导入
php处理数据时会有一个等待时间,就是所说的超时时间,而且如果使用mysql的话,它也有一个超时时间,运行一串代码时间如果超过配置文件的时间,会被中断不运行。第一种你可以修改php配置文件timeout的运行时间,第二你可以分批处理大量数据,注意是分批处理,就OK了。
找到解决方法: php.ini配置文件中有三处地方需要改动: upload_max_filesize memory_limit post_max_size 这三个值都根据实际情况改下,重启服务器以后,虽然导入时仍然显示是 最大限制:2,048 KB) ; 但实际上已经可以导入很大的数据库了。。。