学习一天教程,sae实战发现一个页面要67108864 bytes MC?

#1 spitcold

提示:
SAE_Fatal_error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 523800 bytes) in SpeedPHP/spFunctions.php on line 261

我设置了MemCache 100M,为什么访问一个页面居然要67M左右? 用的smarty模板引擎

2011-06-25 21:28:27

#2 spitcold

一激动说错了。我部署后就访问了一个页面,然后再访问第二个页面就这样了。那个地方设置不好呢?谢谢

2011-06-25 21:31:24

#3 jake

那个提示并非“取67M内存”的意思,而是读取内存的位置出错,也就是俗称的“内存溢出”。

这个有可能是SAE环境对目录操作有所改动,所以导致spFunction内的mkdir出错。这样,你可以直接修改一下spFunction,约在266行左右。

function __mkdirs($dir, $mode = 0777)
{
        if (!is_dir($dir)) {
                __mkdirs(dirname($dir), $mode);
                return @mkdir($dir, $mode);
        }
        return true;
}
修改为:

function __mkdirs($dir, $mode = 0777)
{
        return true;
}
也就是去除mkdir的操作,试试看能否解决问题。

2011-06-25 21:41:12

#4 spitcold

老大。谢谢。找到问题的地方。我在模板页中 将form 的action  <{spUrl c=  a=  }> 删除就可以了。
怎么改正呢?

2011-06-25 21:51:16

#5 spitcold

谢谢老大。按照老大的方法解决了。这个问题怎么没人提出来呢?奇怪了

2011-06-25 21:52:57

#6 jake

好像是在某种情况下才会出现,我自己用sae的时候没发现这问题。。。:dizzy:

2011-06-26 13:10:53

#7 我是小白_

回复 6 jake


   我今天我碰到这个情况了,跟踪这么一个页面不容易啊。昨天被一说,今天就不敢随便的提问了。

2012-02-01 17:25:57

#8 我是小白_

回复 6 jake

我刚刚试过了,具体引起这个问题的代码是这样子的://"engine_path" => SP_PATH . "/Drivers/Smarty/Smarty.clsss.php",
由于加载了这么一段代码所引起的,如果把这段代码注释了,那么就可以了。
结合__mkdirs(dirname($dir), $mode),我在想,难道是由于包含的路径太多的缘故,然后导致了这个问题?

2012-02-01 17:35:45

#9 jake

提问是欢迎的:lol

你删除的引用代码是Smarty的,如果删除了Smarty,那当然可以。不过正是smarty引起的。

这里主要还是sae和smarty的兼容问题引起。这方面的确不好调试和解决。

之前我就建议如果用sae,最好用speedy,纯php模板

2012-02-01 18:26:05

#10 我是小白_

回复 9 jake


    不是的,我么有在SAE里面用,我只是在本地练习Smarty的时候出现的问题。

2012-02-01 21:58:02

#11 jake

回复  jake


    不是的,我么有在SAE里面用,我只是在本地练习Smarty的时候出现的问题。 ...
我是小白_ 发表于 2012-2-1 21:58
楼上说的是SAE里面的提示错误。。。SAE_Fatal_error 是SAE环境专有的,本地不会有这种错误出现。

2012-02-01 22:04:51