5

開発環境と本番環境で異なるデータベース IP アドレスを使用しています。私たちの開発環境は、開発者のマシンでローカルに実行されており、ローカル ネットワーク上の単一の開発データベース サーバーを指しています。私たちの実稼働環境は、RackSpace でホストされているデータベースを使用し、ローカル ネットワークでホストされています。どういうわけか、開発用 IP アドレスが本番環境にキャッシュされているようです。これまでに行ったことは次のとおりです。

  • 本番環境の app/etc/local.xml の IP アドレスが正しいことを確認しました。
  • var/cache/* および var/full_page_cache/* の内容を削除しました
  • memcached サーバーを再起動して、そこにある奇妙なキャッシュをクリアしました
  • dev IP アドレスのコードベース全体を grep しました
  • mysqlデータベースをダンプし、dev IPのダンプをgrepしました(必死でした)
  • /tmp の内容を削除しました
  • 無効化されたカスタム モジュール

これは何週間も問題なく機能しています。問題が始まったのは、構成キャッシュを無効にしたときでした。前回キャッシュがクリアされてから、誰かが行った設定変更をようやく取得したというあなたの考えはわかります。それは理にかなっている。意味をなさないのは、上記のすべてのキャッシュをクリアし、MageToolを使用して構成キャッシュを有効にし、すべてが魅力的に機能することです。

4

1 に答える 1

9

結局のところ、このすべてを修正するには 2 つのステップが必要でした。

本番環境と開発環境では異なる IPapp/etc/local.xmlが必要なため、追跡されず、代わりに追跡app/etc/local-example.xmlされるため、すべての開発者がすばやく簡単にコピーしてapp/etc/local.xml稼働させることができます。これは会社の標準になり、他のすべてのプロジェクトで使用しています。ありがたいことに、私の同僚の 1 人が、Magento が .xml 内のすべての xml ファイルをロードすることを発見しましたapp/etc/

いいえ、私たちの開発 IP は魔法のように目立たない場所にキャッシュされたのではなく、うっかりロードしてしまったのです。そのファイルの名前を変更した後app/etc/local.xml.example、開発 IP の参照を停止しました。わーい!

さて、これは質問とは直接関係ありませんが、ソリューションによって新しいバグが発生したため、言及したいと思います。xml ファイルの名前を変更し、すべてのキャッシュをクリアすると、新しいエラーが表示されるようになりました。

PHP Fatal error: Call to a member function setQueryHook() on a non-object in app/code/core/Mage/Core/Model/Resource/Setup.php on line 347

サンプル ファイルでは、単一<default_setup />ノード内でデータベース リソースを定義していました。私たちの実稼働環境では、実際には読み取りクエリと書き込みクエリ用に個別の IP を持つトリプル m セットアップを使用しているため、実稼働環境では単一の<default_setup />ノード<default_read />とノードの代わりに使用されます<default_write />リソースで何が許可され、何が必要であるかについての正確なドキュメントを見つけることはできませんでしたが、トピックに関する別の StackOverflow 投稿の指示に従って読み取り/書き込みの分割が設定され、今日までうまくいきました.

直感で、<default_write />ノードの名前を に変更する<default_setup />と、魔法のようにすべてが再び機能し始めました。読み取りと書き込みが正しく分割されているかどうかはまだわかりませんが、すべてが機能していることを確認したら、この回答を更新します。

于 2013-01-24T17:59:58.023 に答える