2009年1 11月 2評論

一個悲哀的警世故事:那不捨得的問題

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

上週,我發布我的最新版本的WordPress插件目錄表造物主 我自己感到自豪,我的編碼,故障查找和測試能力。 這一切都在一個單一的夜晚轟然倒塌。

為了削減長話短說,新修訂需要一個輔助功能,以顯示職位條目。 輔助函數只由一個函數調用,因此,我當選為輔助功能包括作為該函數的孩子。 這是在許多語言中常見的做法,因為它整齊打包的所有功能,在接近其傭工。 父函數的方式被稱為每次將顯示一個頁面,並立即終止,如果該頁面不包括站點地圖引發標籤的時間。

確定。 時間的流逝。 現在是凌晨2點。 現在準備測試代碼。 我知道父函數退出立即如果沒有找到啟動標籤。 曾任職,我無處去靠近它,因此它應該繼續努力。 對不對? 我檢查站點地圖頁面,嘗試所有新的和舊的選項和證明的代碼工作。 我趕緊同步SVN庫和急於到床上睡個安穩覺,在太陽升起之前。

第二天早上,我決定來檢查一個大型網站,我知道,用我的插件。 有沒有替代真實世界的測試。 是啊,這一切看起來不錯。 在這一點上,我發現我有興趣在站點地圖中的職位。 我點擊類別鏈接和類別中的第一篇文章,然後一個大的討厭PHP的錯誤消息。 嗯。 我看著另一家大型網站。 嗯。 也許是巧合。 讓我們看一個。 噢,不!

那麼,什麼地方出了錯? 記住,兒童的功能嗎? 我聽說它說,孩子們可以是邪惡的,它竟然是在這種情況下的真實。 如果一個博客頁面,分類頁面,標籤頁或什至一個主頁顯示,在一個頁面上顯示多個職位。 WordPress的通過假裝每一個職位是一個小型的網頁,所有的迷你網頁鏈接在一起,形成一個大頁面。 這意味著,我的父函數被多次調用。 通常不是一個問題。 但現在的功能包含子功能,這些子功能創建的每個父函數被調用(即使他們不使用)。 因此,當第二個職位顯示,頁面崩潰重複的功能名稱錯誤消息。 的淨結果是,在一個看似無關的功能的小錯誤,導致一些非常大的網站去。

故事的士氣:如果你是一個網站管理員,確保您運行插件更新後,每一套完整的測試,無論多麼大或小的插件可能。

標籤: WordPress的

SpinChimp Leaderboard 728x90