学习一天教程,sae实战发现一个页面要67108864 bytes MC?
发布于:2022-01-17 09:50:54
#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