web-dev-qa-db-ja.com

Drupal 7が間違った.jsファイルをロードするのはなぜですか?

クライアントWebサイトの1つで非常に奇妙なバグが発生しており、何が起こっているのか把握できませんでした。難しいです。

問題


scripts[] = script/script.js

数週間前、.infoファイルを更新しました。元の.infoファイルには以下が含まれています。

scripts[] = script/script-min.js

スクリプトとスクリプト最小ファイルは完全に異なるファイルであり、サーバーはscript.jsファイルをロードしている必要があります。

これが私たちが目撃している行動です:

  • テーマキャッシュをフラッシュすると、Drupalは.infoファイルを読み込んでscript.jsをロードします
  • Cronの実行後(5分ごと)Drupalはランダムにscript-min.jsをロードすることを決定します
  • データベースをチェックすると、systemテーブルは、Drupalがscript-min.jsをキャッシュしたことを示しています。

コードの何もscript-min.jsをロードしていないことに注意してください。 grepを実行しましたが、Drupalがファイルをロードしようとしている場所を見つけることができません。script-min.jsファイルは、script.jsファイルと並んでスクリプトディレクトリに存在しますが、どこにも参照されていません。

私たちのセットアップ


  • Acquia Cloud Hosting w/GitおよびPHP 5.3+
  • 3つの環境(開発、ステージ、本番)
  • 本番環境には、バランサーであるニスとMySQLの2つのWebサーバーがあります。 WebサーバーはGlusterファイルシステムを使用してファイルを同期します
  • この問題は、開発/ステージサーバーでは発生しないようです。

私たちが試したこと


  • レジストリの再構築
  • Script-min.jsファイルの削除
  • デュアルサーバー設定の問題を除外するためのWebサーバーIPのターゲティング
  • すべてのキャッシュをクリアする
  • ワニスキャッシュのクリア

なぜ助けが必要なのか


.infoメソッドの代わりにdrupal_add_jsを使用するだけでサーバーに適切なJSファイルを使用できる可能性があることは承知していますが、本当に知りたい理由サーバーは、指示していないファイルをロードしています。

[〜#〜]編集[〜#〜]


私はすでにチェックしており、cronの実行中にdrupal_clear_js_cachesystem_rebuild_theme_data、およびdrupal_theme_rebuild関数はヒットしますヒットしません 。私の元々の想定はそれらの関数に関係していましたが、それらがcronの間に実行されていなければ、おそらく問題ではありません。

問題はこのバグレポートに関連している可能性があります: http://drupal.org/node/1765812

4
donutdan4114

問題は、私たちのサイトを攻撃している不正なサーバーにあることがわかりました。古いWebサーバーがデータベースにアクセスし、古いファイルをキャッシュしていました。

2つのサーバーが何らかの理由で同じホスト名を持っているため、見つけるのが困難でした。

0
donutdan4114