Symfony 2 在共享主机上 - 内存大小不足

12

我遇到了一个紧急情况。

我需要在没有SSH访问权限的共享主机上启动一个Symfony2应用程序。由于缓存预热,Symfony在第一次启动时使用的内存比后续启动使用的内存要多得多。现在,我无法通过控制台运行cache:clear,并且当我手动尝试加载页面时,它会产生错误:

Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 32 bytes) in /home/domain/domain.com/app/bootstrap.php.cache on line 2681

我无法增加内存限制,并且当我尝试从本地机器上传生成的缓存时,在页面加载时会给我完全无法理解的错误信息:

Fatal error: Uncaught exception 'UnexpectedValueException' with message 'The stream or file "/home/domain/domain.com/app\logs/prod.log" could not be opened: failed to open stream: No such file or directory' in /home/domain/domain.com/app/cache/prod/classes.php:5705

是否有人知道减少内存占用或至少提供已经生成的生产缓存的方法?


除非我犯了错误,否则这意味着您的最大内存分配为64兆。我认为要么是托管存在问题,要么您需要转移到真正的主机。 - RiggsFolly
@RiggsFolly - 它是64 MB,而不是64 KB。(编辑:正如你自己认识到的那样。;)) - x-ray
@x-ray 你,我有点觉得自己有些失误了。 - RiggsFolly
看看周围,网络上有很多关于Symfony和内存使用的内容。这显然是一个问题。也许你只是无法把四分之一的东西塞进一个小瓶子里。 - RiggsFolly
1
好的,因此除了选择提供给PHP用户超过64兆内存的托管包之外,没有其他答案。或者设置您的开发站点以具有类似的限制,这样当您尝试在生产环境中运行时,您就不会遇到意外情况。 - RiggsFolly
显示剩余3条评论
1个回答

1

您不能在应用程序之外的任何其他地方生成缓存文件。

您可以尝试通过rm -Rf app/cache/*或类似方式手动删除缓存,并尝试在第一次页面加载时重新生成缓存。但这可能会导致相同的错误。

为什么您不能运行cache:clear命令?通常,在cli环境中设置了更高的内存限制,因此您在那里运行命令会更好。


手动删除缓存是显而易见的解决方案,但应用程序在第一次加载时会出现问题,错误消息如问题所述。实际上,这个问题是关于“如何在共享托管环境中使用可用内存满足要求来预热缓存”的,这也意味着 - 没有CLI。 - Damaged Organic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接