Symfony2给出空白页面

时间:2011-08-05 06:56:21

标签: php orm doctrine-orm symfony

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日志文件或其他可能导致错误的内容?除了一次做一个事务之外还有什么工作,因为这需要13,333小时......如果你查看第一个日志条目,这是一个非常基本的更新(只添加一个关系)。

我正在使用APC运行PHP 5.3.2

我还注意到当函数到达底部的flush命令时,它成功执行了它。 因此,我认为现在只有SF2才能成功渲染视图?

4 个答案:

答案 0 :(得分:2)

如果您在Doctrine2中进行批处理,那么您的实体管理器将会增长,并且您正在违反PHP内存限制。

http://www.doctrine-project.org/blog/doctrine2-batch-processing.html

您正在创建数千个对象,并且每个周期都在增长。

使用ORM进行批处理时,您需要小心,以消除内存泄漏。 ORM并不总是这项工作的最佳工具,但是如果你小心你正在做的事情就可以使用它。

答案 1 :(得分:1)

尝试删除这些文件夹: - 缓存 - 记录

并重新加载您的页面。

答案 2 :(得分:0)

我认为你应该打开并查看你的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

实时查看

答案 3 :(得分:0)

尝试在您的环境的配置文件中添加“cache:false”到twig。 解决我。