php读库生成xml文件 话说库里有60多W条记录,用php+mysql循环读库,生成xml文件。 现在准备每个xml页面存1000条记录,那就是生成60多页xml文件。 现在问题来了:每次生成xml文件到13页的时候 也就是读库里134000条的时候,页面就报错了: Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 80 bytes) 求大牛 帮忙看下 这是怎么回事? 该怎么处理? 如何让他顺利生成完所有页面 祝好心人一生平安!------解决方案-------------------- 分配的内存不够用了,修改php.ini 找到memory_limit = 128M 改大一点------解决方案-------------------- 超过php.ini配置文件中memory_limit设置的内存限制了(默认值是128MB,134217728字节)。128兆已经够多了,估计你的代码有问题,循环的时候都是每1000条记录保存到一个变量?可以改为每读取1000条变量保存到一个PHP变量,然后写xml文件,再读取1000条变量,保存到同一个变量,再写xml文件。。。------解决方案-------------------- 内存超过限制了,可以试着调高php.ini中的内存限制。 最好还是增加循环读取次数,而且每次循环结束时unset() mysql_free_result()释放不需要的内存------解决方案-------------------- 把关键代码发上来看看。------解决方案--------------------
探讨
确定是这样么,如果不改服务器配置文件,还有其他办法吗?
------解决方案--------------------
探讨
内存超过限制了,可以试着调高php.ini中的内存限制。 最好还是增加循环读取次数,而且每次循环结束时unset() mysql_free_result()释放不需要的内存
------解决方案-------------------- 内存不够了呗,
方法是:
1.增大程序可以使用的内存 ini_set('memory_limit', '???M');
2.减少程序已经使用的内存, 看你的code
------解决方案-------------------- 我没算错的话应该是600多页吧
用mysql_free_result()释放结果集而不是mysql连接,10页释放一次,还不信了这点数据还搞定不了
------解决方案-------------------- 只要数据本身不存在问题,分批读和写应该没事的.如果服务器有限制而无法修改参数,你可将数据下载回来本地处理嘛.
探讨
引用: 我没算错的话应该是600多页吧 用mysql_free_result()释放结果集而不是mysql连接,10页释放一次,还不信了这点数据还搞定不了 大哥你说的对 是600多页 但大哥你确定可以搞的定?
------解决方案--------------------
探讨
现在问题来了:每次生成xml文件到13页的时候 也就是读库里13000条的时候,页面就报错了: Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to a……
------解决方案-------------------- 贴出代码瞧瞧就知道
------解决方案-------------------- 另外一个可能的情况,你查询数据库返回的结果集中记录的平均长度比较巨大(比如记录平均总长度超过120KB)。可以尝试用mysql_unbuffered_query代替mysql_query。
------解决方案--------------------
探讨
504 Gateway Time-out -------------------------------------------- nginx/0.6.35
------解决方案-------------------- 504 Gateway Time-out 是超时了
不是 php 超时,而是 nginx超时。因为你在处理期间一直没有echo
DOMDocument 非常消耗内存
对于你的应用不见得合适
你可贴出 xml 结构看看,可能在 SQL 中可组装完成
------解决方案-------------------- 关于 504 Gateway Time-out 你可以看看这些 http://www.google.com.hk/search?client=aff-cs-360chromium&ie=UTF-8&q=504+Gateway+Time-out
没有必要和你争辩
既然是 服务器我没权限 ,那么也就无所谓命令行执行了