什么通常会导致PHP遇到堆栈溢出?

时间:2009-01-21 20:39:54

标签: php windows iis memory

我在服务于某些php网站的Windows IIS服务器上。我们已将一个有效的PHP站点移到我们的服务器上,但是提交其中一个表单会返回:

PHP has encountered a Stack overflow

在注释掉MYSQL INSERT并为表单进程分配SESSION变量时,这些都是提交表单的重要部分。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:6)

太多的递归?

答案 1 :(得分:1)

对我而言,它通常是一个无限循环(包括无限递归)

答案 2 :(得分:1)

您使用的是哪个版本的php?在某些旧版本中,如果我没记错的话,无限(或非常深)的递归会导致堆栈溢出。今天你会得到一个更具体的错误信息(“最大功能嵌套级别'100'到达,中止!”。

你提到会话是可能的原因;您是否在会话中存储复杂的数据结构?会话在请求之间被序列化和反序列化,如果你在其中放入太多东西可能会导致一些问题(不知道多少太多了)。也许你可以减少它?

答案 3 :(得分:0)

[题外话]

$stackoverflow = file_get_contents('http://stackoverflow.com/tags/php');
// voila, php encountered stackoverflow ^-^