Kreiptis pagalbos

Atsakome el. paštu, dažniausiai per dvi dienas.

Google reCAPTCHA tikrina šį pateikimą, kad apsaugotų nuo piktnaudžiavimo; duomenys siunčiami Google. Scenarijus įkeliamas tik atvėrus šią formą.

← Visi įrašai

Puslapio adresas, ilgesnis už jo stulpelį

Apie turinį ir jo patikrą

Šiame straipsnyje

2026 m. rugpjūčio 9 d. nepavyko sugeneruoti dvidešimties skaitiklių paveikslėlių. Ne nupiešta neteisingai ar lėtai — lankytojas toje vietoje, kur turėjo būti skaitiklis, negavo visai nieko.

Priežastis – ilgesnis nei 255 ženklų puslapio adresas. Dabar jis trumpinamas įrašymo metu, o skaitiklio paveikslėlis nebepriklauso nuo jam pranešto adreso ilgio.

Grandinė

Stulpelis, kuriame saugoma, į kokį puslapį pateko apsilankymas, yra varchar(255). Atkeliavęs adresas buvo ilgesnis. Įterpimas nepavyko su SQLSTATE 22001, duomenys per ilgi stulpeliui, o šiame kode tai sukėlė išimtį.

O statistika įrašoma prieš piešiant paveikslėlį. Taigi išimtis ne tik prarado vieną statistikos eilutę. Ji nutraukė užklausą, o ši užklausa kuria skaitiklio paveikslėlį. Ilgą adresą turintis puslapis tyliai sugadino savo skaitiklį kiekvienam lankytojui.

stulpelisvarchar(255)įterpimas nepavykstaSQLSTATE 22001išimtisnutraukia užklausąlankytojas negauna skaitiklio paveikslėlio

Ilgi adresai nėra egzotika. Galerija su įdėtiniais keliais, parduotuvė su tuzinu reklamos platformos pridėtų sekimo parametrų, paieškos rezultatų puslapis — bet kuris jų lengvai viršija 255 ženklus.

Pataisymas ir nepasirinktas pataisymas

Dabar adresas prieš įterpiant nukerpamas pagal stulpelio plotį. Puslapių sąraše prarandama dvidešimt labai ilgo URL ženklų; daugiau niekas nesikeičia.

Kitas variantas buvo platinti stulpelį. Jo atsisakyta: nėra pločio, kurio nebūtų galima viršyti, o didesnis skaičius tik nukelia tą patį gedimą tolyn, kur įvykusį gedimą bus sunkiau atpažinti. Gedimas turi nebelemti visko nutraukimo, o ne tik retėti.

Apgaubus įterpimą try/catch, matomas simptomas taip pat būtų dingęs, bet tai būtų blogiau: skaitiklis nusipieštų, eilutė tyliai dingtų, o puslapių sąraše amžinai trūktų būtent sudėtingiausius adresus turinčių puslapių, ir jokiame žurnale nebūtų jokio įrašo.

Du dalykai, kuriuos verta įsiminti

Išorinę įvestį reikia trumpinti pagal stulpelio plotį, o ne tikėtis, kad tilps. Visa, kas ateina iš išorės — adresas, nukreipiantis puslapis, naršyklės identifikavimo eilutė, antraštė — yra tokio ilgio, kokį nusprendė kažkas kitas, o duomenų bazė apie tai turi nuomonę, kurią išreiškia atsisakymu.

Žinokite, ką dar gali paveikti gedimas. Tai buvo statistikos klaida statistikos paslaugoje, o matoma žala – trūkstamas paveikslėlis. Įrašymas ir vaizdo generavimas dalijosi viena užklausa; niekas kode nesakė, kad jie susieti, ir niekas neįspėjo, kad nepavykęs įterpimas nusineš ir paveikslėlį.

Dvidešimt sugadintų paveikslėlių per dieną – mažai. Tai rasta skaitant žurnalus visai kitu tikslu – taip tokie dalykai paprastai ir randami, todėl juos verta skaityti toliau.

Reklama