【问题标题】:Magento 1.5.0.1 Occasional 'Call to a member function getId() on a non-object'Magento 1.5.0.1 偶尔“调用非对象上的成员函数 getId()”
【发布时间】:2012-04-21 14:03:26
【问题描述】:

我正在使用 Magento 1.5.0.1,并且在结帐时偶尔会出现“调用非对象的成员函数 getId()”错误。

客户将尝试使用相同的详细信息进行多次结帐,并且错误“调用非对象上的成员函数 getId()”将不断出现,但几秒钟或几分钟后,错误将停止,结帐将通过。

这不会发生 100% 的时间。

我已经检查过: 1) Apache 错误日志是干净的,apache 有很多免费的系统资源。根据官方指南针对 Magento 进行了优化。 2) MySQL 错误日志是干净的,mysql 有大量的系统资源免费。根据官方指南针对 Magento 进行了优化。 3) PHP 错误日志将仅显示“在非对象上调用成员函数 getId()”,没有迹象表明 PHP 用完了 ram,即 RAM 用完的典型内存分配失败错误。 4) 已执行所有其他 Magento 优化:缓存、编译、APC、PHP 限制为 256mb。 5) APC 有大量的系统资源费用。 6) CPU 从未达到 25-50% 的使用率,RAM 仅使用了 40-50%,超过 50% 的空闲!

还可以获得“在非对象上调用成员函数 getStoreId()”错误消息。

我正在撕扯我的头发,尝试我还能做些什么!在 50 个订单中,它会搞砸大约 2-3 个订单,即客户在 5-10 分钟的时间内尝试结帐约 5-10 次。

可以锁定什么?

【问题讨论】:

  • 完整的错误信息是什么?它应该指示错误来自哪个文件/行。

标签: magento magento-1.5


【解决方案1】:

当我分析我的 Magento 安装 (1.4.2) 上的类似错误时,我能够总结出这是基于 whois 和 nslookup 搜索对网站的某种黑客攻击。人们(机器人?)在没有正确初始化会话的情况下下订单,因此没有为来自 Id 的商店(或任何其他)对象建立。这应该被标记为一个错误,以便他们能够正确处理这种情况并重新初始化会话或执行一些其他操作,以更好地防止人们在表单的逻辑周围戳。

此外,代码中存在某种错误,有时客户可以订购 0 美元的商品。在每种情况下,都是普通客户,当他打电话时,他很惊讶,并给了我们人工付款处理的 CC 详细信息。清除缓存和每天第一件事都会对此有所帮助。

【讨论】:

  • 有趣。这不会是一次黑客攻击,因为当客户告诉我们他们无法结账时实际上是在联系我们。另外,需要注意一些有趣的事情:发生这种情况时,当我自己尝试结帐时,我遇到了同样的问题。所以这个问题不会被孤立到单个用户会话中。它只是一次又一次地发生,我们有 10-20-30 分钟的时间,任何结账尝试都会导致错误。几周前发生了一次巨大的失败,当时错误根本不会消失!我必须进入数据库并重置增量数字。
  • 添加 0 美元的项目不会是这种情况,因为如上所述,当问题发生时,我实际上尝试自己结帐,我可以确保该项目不是 0 美元。此外,在 getId() 错误在几个小时后不会停止的中断期间,我做了所有事情:1)清除所有缓存,2)重新索引 3)清除 APC,4)修复数据库......一切!唯一停止它的是当我重置 magento 数据库中的增量计数时。但这并不能解释为什么有时它会发生并在几分钟后消失,以及它没有消失的时间。
  • 顺便说一句,错误发生在 onepagecontroller 文件中,我们的文件中有 mods,所以行号不会相同(并且没有 mods 不会导致这种情况,它们是扩展其他的东西)。我们实际上做了一个测试,在使用 ->save(); 保存订单之后;在控制器中,当 getId() 被调用时发生错误,并且当它被注释掉时,它在 getIncrementId() 被调用时仍然发生。另外有趣的是,订单没有创建。所以也许问题不在于 getId() 或 getIncrementId(),也许无法调用该对象,因为...
  • 订单实际上并没有被创建和保存,但如果是这样的话,是什么导致订单没有被保存?我们没有收到任何其他错误消息。
  • 顺便说一句,在这些时间里,我们无法创建订单、发票、贷项通知单、运输,基本上与订单有关。这一切都停止了。仍然可以创建报价。
猜你喜欢
  • 2015-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多