Упозорење о Тешко: буг који је почео да бежи
Прошле недеље сам објавио ажурирану верзију свог Садржај Творца додатак за ВордПресс. Ја сам поносни на своје кодирање, кривица проналажење и испитивање способности. Да су сви срушио у једном ноћу.
Да скратимо причу, нове ревизије потребан помагач функција за приказ уноса поруке. Помоћник функција је само позвао једну функцију, а ја због тога изабран да укључи функцију помагача као дете ту функцију. То је уобичајена пракса у многим језицима као што уредно пакете свим функцијама и њихових помагача у непосредној близини. Родитељ функцију начин се зове сваки пут страница је приказан и престаје одмах ако тој страници не укључује локацију таг мапа иницијатор.
Ок. Време пролази. Сада је 2 ујутру. Код је сада спремни да испробају. Знам да родитељ функције излази одмах ако не пронађе ознаку иницијатор. То је раније радила, а ја нигде отишао код њега, тако да треба да наставе да раде. Зар не? Проверавам страници сајта, испробајте све нове и старе опције и докаже да код ради како треба. Брзо сам синхронизујете свн спремишту и одјурити у кревет да би добили неке спавање пре него што сунце долази горе.
Следећег јутра сам да одлучи да провери велики сајт Знам да користи мој додатак. Не постоји замена за стварни свет тестирање. Да, све изгледа добро. У том тренутку сам приметио поруку у мапа сајта који је изгледао интересантно. Ја кликнуо на линк и категорије уручена на прву поруку у категорији и онда велики гадан ПХП поруку о грешци. Ммм. Погледао сам на још један велики сајт. Ммм. Можда случајност. Хајде да погледамо још један. Ох, не!
Па шта је пошло наопако? Запамтите да функције дете? Чуо сам да је рекао да деца могу да се зло и испоставило да је истина у овом случају. Ако блогу страна, категорија страна, ознаке страница или чак кућне страница је приказан, више поруке су приказани на једној страници. УордПресс ради тако што се претвара да је сваки пост је мини-страницу и повезује све мини страницама заједно да формирају једну велику страну. То значи да је мој родитељ функције назива се више пута. Нормално није проблем. Али сада, као функција садржи дете функције, те дете функције се креира сваки пут када родитељ функције назива се (чак и ако се не користе). Стога, када је тадашњи други пост је приказан, страница пада са дупликат функције поруку назив грешке. Нето резултат је био да мали буг у наизглед неповезаних функцију због неколико веома великих сајтова да иде доле.
Морал приче: Ако сте веб администратора, проверите да ли сте покренули комплетан пакет тестова након сваког додатак ажурирање, без обзира колико велики или мали додатак који може бити.



















