2009年11月1日 2コメント

悲哀の訓話:ガットアウェイバグ

http://markbeljaars.com/wp-content/plugins/sociofluid/images/digg_48.png~~ROOT~~V http://markbeljaars.com/wp-content/plugins/sociofluid/images/reddit_48.png~~ROOT~~V http://markbeljaars.com/wp-content/plugins/sociofluid/images/stumbleupon_48.png~~ROOT~~V http://markbeljaars.com/wp-content/plugins/sociofluid/images/delicious_48.png~~ROOT~~V http://markbeljaars.com/wp-content/plugins/sociofluid/images/furl_48.png~~ROOT~~V http://markbeljaars.com/wp-content/plugins/sociofluid/images/technorati_48.png~~ROOT~~V http://markbeljaars.com/wp-content/plugins/sociofluid/images/facebook_48.png~~ROOT~~V http://markbeljaars.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png~~ROOT~~V http://markbeljaars.com/wp-content/plugins/sociofluid/images/mixx_48.png~~ROOT~~V http://markbeljaars.com/wp-content/plugins/sociofluid/images/twitter_48.png~~ROOT~~V

先週、私は私の更新版リリースの内容のクリエーターの表 WordPress用のプラグインを。 私は、私のコーディングの能力を発見し、テストする障害を自分自身を自漫する。 すべては一つの夜にダウンクラッシュ来ている。

01034に、新しいリビジョンは、後のエントリを表示するには、ヘルパー関数が必要。 ヘルパー関数はただ一つの関数によって呼び出され、それゆえ、私はその関数の子のようにヘルパー関数を含むように選出された。 それがきれいに近接内のすべての関数とそのヘルパーをパッケージ化するので、これは多くの言語で一般的な方法です。 方法により、親関数は、ページが表示され、そのページがサイトマップの創始者のタグが含まれていない場合、直ちに終了されるたびに呼び出されます。

[OK]。 時間が経過。 それは今午前2時です。 コー​​ドのテスト準備ができました。 私は親関数の終了は、すぐにそれがイニシエータのタグを見つけることができなかった場合、ことを知っている。 これは、以前に働いている、と私はそれの近くにどこ行っていないので、動作し続けるはずです。 右? 私は、サイトマップのページをチェックし、すべて新しいものと古いもののオプションを試してみると、コードが意図したとおりに動作していることを証明する。 私はすぐにSVNリポジトリを同期化し、太陽が立ち上がる前に、いくつかの睡眠を得るためにベッドにオフに急ぐ。

翌朝私はプラグインを使用して、私が知っている大規模なサイトをチェックすることを決定。 現実世界のテストに代わるものはありません。 ええ、それはすべてよさそうだ。 その時点で私は面白そう、サイトマップに記事に気づいた。 私はカテゴリのリンクをクリックして、最初のカテゴリの後の、大きな厄介なPHPのエラーメッセージが表示されました。 MMM。 私は別の大規模なサイトを見ました。 MMM。 多分偶然の一致。 複数を見てみましょう。 ないOH!

では、何がまずいのか? その子の機能を覚えていますか? 私はそれは子供たちが悪になることを言った聞いた、それはこの場合には真であることが判明。 さらにブログのページ、カテゴリページ、タグページやホームページが表示されている場合は、複数の投稿は、1ページに表示されます。 WordPressは各ポストはミニページであり、一つの大きなページを形成するために、すべてのミニページを一緒にリンクするふりをしてこれを行います。 これは私の親関数が複数回呼び出されることを意味します。 正常にできない問題。 関数は、子関数を含んでいるが、今、これらの子関数が親関数は(それらが使用されていなくても)が呼び出されるたびに作成されています。 したがって、2番目のポストが表示されている場合、ページが重複する関数名をエラーメッセージでクラッシュします。 正味の結果は、一見無関係な機能の小さなバグがいくつかの非常に大規模なWebサイトがダウンする原因となったということでした。

物語の士気は:あなたがウェブサイトの管理者である場合は、プラグインが可能性があることがどんなに大きいか小さい、すべてのプラグインのアップデート後にテストの完全なスイートを実行していないことを確認してください。


SpinChimp Leaderboard 728x90