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才能成功渲染视图?
答案 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。 解决我。