这个问题在PHP的官方网站上叫缓冲查询和非缓冲查询(Buffered and Unbuffered queries)。PHP的查询缺省模式是缓冲模式。也就是说,查询数据结果会一次全部提取到内存里供PHP程序处理。这样给了PHP程序额外的功能,比如说,计算行数,将指针指向某一行等。更重要的是程序可以对数据集反复进行二次查询和过滤等操作。但这种缓冲查询模式的缺陷就是消耗内存,也就是用空间换速度。
专注于为中小企业提供成都网站设计、网站制作、外贸营销网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业盘龙免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
相对的,另外一种PHP查询模式是非缓冲查询,数据库服务器会一条一条的返回数据,而不是一次全部返回,这样的结果就是PHP程序消耗较少的内存,但却增加了数据库服务器的压力,因为数据库会一直等待PHP来取数据,一直到数据全部取完。
很显然,缓冲查询模式适用于小数据量查询,而非缓冲查询适应于大数据量查询。
这个,不是PHP本身的问题。
而是你的服务器网络带宽的问题。
你用curl请求的是远程的服务器,要占用带宽吧?用户访问你的网站,也要占用带宽吧?于是,你的带宽就悲剧了。
----------------------------------
一个PHP程序执行完,所有的东西就消失了,内存就自动释放了...所以这方面你不需要考虑的。
进入php源程序目录中的ext目录中,这里存放着各个扩展模块的源代码,选择你需要的模块,比如curl模块:cd curl
执行phpize生成编译文件,phpize在PHP安装目录的bin目录下
/usr/local/php5/bin/phpize
运行时,可能会报错:Cannot find autoconf. Please check your autoconf installation and
the $PHP_AUTOCONF
environment variable is set correctly and then rerun this
script.,需要安装autoconf:
yum install autoconf(RedHat或者CentOS)、apt-get install
autoconf(Ubuntu Linux)
/usr/local/php5/bin/php -v
执行这个命令时,php会去检查配置文件是否正确,如果有配置错误,
这里会报错,可以根据错误信息去排查!
你好
时候我们再运行php程序时,会出现
Allowed memory size of 8388608 bytes exhausted (tried to allocate 1298358 bytes)
出现该错误的原因:在确保不是程序产生的原因(例如死循环),是由于php页面消耗的最大内存默认是为 8M (在PHP的ini件里可以看到) ,
如果文件太大 或图片太大 在读取的时候 会发生上述错误。
解决办法:
1.修改 php.ini将memory_limit由 8M 改成 16M(或更大),重启apache服务
2.在PHP 文件中 加入 ini_set(‘memory_limit',‘**M');注意:为了系统的其它资源的正常使用 请您不要将 memory_limit设置太大,其中-1为不限
3.修改.htaccess 文档(前提是该目录支持.htaccess)在文档中新增一句:php_value memory_limit 16M(或更大)
满意请采纳
unset()是可以释放内存的,但是$str=null基本释放不了的,建议还是用unset()就好了,$str=null只是用来清空变量,以防下面再用的时候遭到干扰的。