我正在使用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次。
什么可以锁定?
答案 0 :(得分:0)
当我分析我的Magento安装(1.4.2)上的类似错误时,我能够将基于whois&和/或nslookup搜索。人们(机器人?)正在下订单而没有正确初始化会话,因此没有为Id建立的商店(或任何其他)对象。这应该被标记为一个错误,以便他们可以正确处理这种情况并重新初始化会话或执行一些其他操作,以更好地强化人们围绕表单的逻辑。
此外,代码中存在某种错误,偶尔客户可以订购0美元的商品。在每种情况下,它都是一个普通的客户,当被叫时,他很惊讶并向我们提供了手动支付处理的CC细节。每天首先清除缓存和所有内容都有助于此。