1

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、256MBのPHP制限。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 に答える