Symfony2 给出空白页
Posted
技术标签:
【中文标题】Symfony2 给出空白页【英文标题】:Symfony2 gives blank page 【发布时间】:2011-10-20 14:55:25 【问题描述】:Symfony 2 死了,给了我空白页。免责声明:我讨厌空白页。无论如何,我如何找出问题所在;为什么它死了;为什么没有错误?
检查dev.log
它给了我无用的信息:
[2011-08-05 08:41:33] doctrine.DEBUG: UPDATE accTransactions SET report_id = ? WHERE id = ? ([8163,2941852])
[2011-08-05 08:41:33] event.DEBUG: Notified event "kernel.view" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelView".
[2011-08-05 08:41:33] event.DEBUG: Listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelView" stopped propagation of the event "kernel.view".
[2011-08-05 08:41:33] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse".
[2011-08-05 08:41:33] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Bundle\SecurityBundle\EventListener\ResponseListener::onKernelResponse".
[2011-08-05 08:41:33] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Bridge\Monolog\Handler\FirephpHandler::onKernelResponse".
[2011-08-05 08:41:33] event.DEBUG: Notified event "kernel.response" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\CacheListener::onKernelResponse".
[2011-08-05 08:41:33] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse".
[2011-08-05 08:41:35] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse".
php_error.log
等没有错误。
我正在对一个大表运行更新,每个请求大约执行 1500 多个查询(大约需要 15 秒)。我认为 PHP 的死亡与 Doctrine2 有关。它非常不稳定,因为当交易数量似乎增加时它开始死亡......我必须管理我对 ORM 的期望更高,而不仅仅是空白死亡。
是否有 db 日志文件或可以给我一个错误的东西?除了一次处理 1 个事务之外,还有任何其他需要处理的事情,因为这需要 13,333 小时...如果您查看第一个日志条目,这是一个非常基本的更新(只需添加一个关系)。
我正在使用 APC 运行 PHP 5.3.2
我还注意到,当函数到达底部的刷新命令时,它成功执行了它。 因此,我认为现在只有 SF2 没有成功渲染视图?
【问题讨论】:
开发环境中有空白页吗? (使用 app_dev.php 文件)。你看过分析器吗? (您可以搜索旧请求,然后查看所有开发日志) (愚蠢的问题)你可以尝试添加 ini_set('display_errors', 1);在 app_dev.php 的开头? Help with php blank page?的可能重复 【参考方案1】:如果您在 Doctrine2 中进行批处理,那么您的实体管理器将会增长,并且您正在违反 PHP 内存限制。
http://www.doctrine-project.org/blog/doctrine2-batch-processing.html
您正在创建数千个对象,并且每个周期都在增长。
使用 ORM 进行批处理时需要小心,以消除内存泄漏。 ORM 并不总是完成这项工作的最佳工具,但如果您对自己所做的事情小心谨慎,就可以使用它。
【讨论】:
您的链接已损坏:doctrine-project.org/blog/doctrine2-batch-processing.html【参考方案2】:尝试删除这些文件夹: - 缓存 - 日志
并重新加载您的页面。
【讨论】:
这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post。 我无法在他们的帖子下方发表评论,这就是我创建答案的原因。虽然,我确实找到了我正在寻找的解决方案。问题来自缓存文件夹。一个 php bin/console cache:warmup 成功了。为了回答这个问题,我认为在尝试清除缓存(文件夹)时,某些文件不会重新生成,例如 classes.php 或 classes.meta.php,这会导致内部服务器错误,从而导致 Web Profiler 无法显示自己或错误。这发生在我安装 Symfony 2.5 和 Sonata Admin Bundle 之后。希望对您有所帮助。 就我而言,清除缓存本身并不能解决问题。但是控制台会在执行命令后输出问题。 TWIG 耗尽了 ...Environment.php 中允许的内存大小:当我尝试访问 SonataAdminBundle 列表视图时,第 223 行的 eval() 代码。 我同意,这需要很多内存。希望您找到解决问题的方法。【参考方案3】:我认为您应该打开并查看您的 mysql 查询日志。在 Debian Linux 上,您应该编辑文件 /etc/mysql/my.cnf
并对其进行编辑,使其看起来类似于
[mysqld]
# ...
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
general_log_file = /var/log/mysql/mysql.log
general_log = 1
log_error = /var/log/mysql/error.log
所以你可以通过tail -F /var/log/mysql/mysql.log
实时查看
【讨论】:
【参考方案4】:尝试在您的环境的配置文件中将“缓存:false”添加到 twig。 解决我。
【讨论】:
以上是关于Symfony2 给出空白页的主要内容,如果未能解决你的问题,请参考以下文章