1

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

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

这不会发生 100% 的时间。

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

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

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

可以锁定什么?

4

1 回答 1

0

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

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

于 2012-04-24T01:54:18.240 回答