【问题标题】:Erratic error with PHP and DoctrinePHP 和 Doctrine 的不稳定错误
【发布时间】:2012-09-11 14:46:42
【问题描述】:

我试图在 Google 上找到一些关于在运行我的一个项目时随机发生的这个奇怪的致命 PHP 错误的信息。

在第 1341 行的 Doctrine/ORM/Persisters/BasicEntityPersister.php 中找不到类“Doctrine\ORM\ORMException”

第 0 行 Unknown 中允许的内存大小为 134217728 字节已用尽(尝试分配 47877190154432 字节)

当显示一个页面时,这些错误在没有任何逻辑的情况下发生,该页面的源数据和处理后的数据在一次调用中保持不变,并且有时脚本在哪里:

  • 运行良好,
  • 传输过程中有时会失败,
  • 在服务器可以发送任何数据(包括 HTTP 标头)之前有时会失败,
  • 有时工作正常,但从呈现的 HTML 中进行后续 ajax 调用失败

我检查了日志文件,但找不到任何关于为什么会发生这种情况的线索。

谁能告诉我他是否遇到过这种问题和/或告诉我可以检查的东西以解决这个烦人的问题吗?

编辑:似乎与预编译有关的 Smarty 问题...

【问题讨论】:

  • 您是传输大文件还是将文件存储到数据库中,还是进行 eval()?
  • 错误信息说 PHP 试图分配 47877 GB 的 RAM!不出所料,它失败了。
  • 您是否尝试打印出 Doctrine 对象(用于记录)?这会产生无休止的递归,因为两个对象相互依赖
  • @DelPedro :不,不是这些。该页面通过不带参数的简单 GET 调用。没有文件操作,也没有 eval()。
  • @Jocelyn。我也注意到了这一点。但是,请确保我没有尝试过,我的服务器没有这么多内存! :)

标签: php memory doctrine-orm


【解决方案1】:

看起来 Doctrine 在内存中保留了太多对象(因此是持久性),您需要编写一些管理代码来刷新不需要使用的持久性对象。或者确保 Doctrine 使用文件系统而不是内存来存储持久对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-10
    • 2015-05-08
    • 2017-08-02
    • 2017-03-02
    • 1970-01-01
    • 2018-10-02
    • 2012-07-07
    • 2012-09-27
    相关资源
    最近更新 更多