PHP has encountered a Statck overflow堆栈溢出解决办法 – 21运维
通知: .-...

PHP has encountered a Statck overflow堆栈溢出解决办法

php 21运维 3179浏览 0评论

【PHP has encountered a Statck overflow】
描述:PHP遇到堆栈溢出
PHP has encountered a Stack overflow 
空间内存不足或者服务器的php版本问题
[案例]
Q:客户在使用phpcms一段时间后,更新栏目缓存 老是提示:PHP has encountered a Stack overflow

S:客户在把一些栏目删除或者新增栏目时没更新栏目缓存.还有就是用户在修改栏目时,不小心将上级栏目修改成本栏目ID,这样也会出现这个提示
导致v9_category表里有原来的垃圾信息,多余的表。

通过phpmyadmin找到多余的表,删除后恢复正常。

【PHP has encountered an Access Violation at 016E73DD】
最好先查看系统日志文件,我们从日志中就可以发现很多问题。
我们就是因为数据库表出错,修复一下就可以了,重启下iis或重启下服务器试试。

出现的原因:网站内存占用高与服务器内存资源少,IIS应用池资源不能即时回收导致

(例如phpwind网站主要是在unix环境下开发的,但是作者忽略到windows实际上不像u主机那样,是没有u主机的那种内存共享机制的——典型的php版本和系统兼容问题) 

解决方法: 
1、服务器设置: 
         1)设置IIS应用池回收时间小于60分钟(默认是1740分钟,很多服务器都没改过) 
         2)应用池可支配大小不低于500M 
         3)CPU使用限制不低于50%(部分服务器为了提供更多虚拟机给站长使用,限制了CPU使用率) 
         4)可以安装php的eAccelerator模块,网站可提速5-10倍,还可减少pw9的文件加载资源消耗 
2、网站优化(IIS 虚拟机用户): 
        1)后台关闭debug模式 
        2)把模块属性里的“数据更新周期”设为480分钟,并设置“数据更新区间”设为“开始于1点0分 结束于10点0分” 
意思就是数据自动更新时间在访问空闲时段,避免高峰数据更新占用大量内存和CPU资源。如果还出现,直接把周期设为0,手动更新。模块包括默认的喜欢页和话题页模块以及拖曳、导入的模块 
        3)后台全局里设置防刷新时间间隔3秒 
        4)减少二级域名和伪静态的使用,这个很占用资源 

额外的话:虚拟主机用户使用前请先确认php有没有安装zlib模块(用于应用安装)和socket模块(curl模块)用于应用中心以及windid通信。另外高版本的PHP和Mysql存在兼容性的问题。

其他VPS/云主机/独立服务器设置原因详解参考资料http://www.jb51.net/article/10072.htm.

(仅供参考,具体适各自网站和空间情况)

总之,空间商业务生产的环境(问题)的要么是网站放多了要么就是大量网站在修改内容导致的。

转载请注明:21运维 » PHP has encountered a Statck overflow堆栈溢出解决办法

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址