Am inceput de curand sa realizez un website dedicat jucatorilor de Hattrick si anume un website de statistici.
Modul de functionare ar fi destul de simplu, liniar:
- un script de update, folosing extensia cURL, downloadeaza de pe site-ul Hattrick informatiile (sub forma de fisiere XML) pentru fiecare echipa inclusa in statistici, pentru fiecare etapa ce se disputa;
- alte scripturi genereaza statistici felurite: echipa cu cel mai “scump” lot, cu cele mai mari salarii, cu cea mai buna performanta, seria cu cea mai buna medie de perfomanta, etc.
Eh, prima piedica ar fi numarul imens de XML-uri ce trebuiesc downloadate: 35490. Multe, nu?
Sunt 1365 de serii a cate 8 echipe in fiecare serie, jucand-se deci, cate 4 meciuri pe etapa. Dureaza o vesnicie.
Toate aceste XML-uri sunt downloadate folosind un simplu algoritm: pentru fiecare serie extrag lista de meciuri, pentru fiecare meci extrag informatiile descriptive si ID-urile echipelor combatante si pentru fiecare echipa extrag alte date.
Iar acum bugul: dupa aproximativ 750 de serii downloadate (mai bine de 4 ore) deodata primesc mesaj de eroare din partea scriptului cum ca un meci deja existent se incearca a fi introdus in baza de date. WHAAAAAAT? Cum se poate asa ceva? Si era chiar primul meci al primei serii downloadate. Nu mi-a venit sa cred si nici nu am gasit bugul (daca o fi vorba de un bug, pentru ca nu pot gasi punctul de repetabilitate, deci nu pot simula nicicum comportarea defectuasa).
Mai apoi repornesc scriptul de update (download) de unde a ramas si dupa numai alte cateva serii downloadate, se poticneste din nou cu aceeasi problema: primul meci din prima serie nou downloadata se incearca a fi reintrodus in baza de date. Repornesc si din nou apare problema dar dupa numai 2 serii downlodate. Ma enervez, dar repornesc update-ul si merge fara probleme pana la capatul celor 1365 de serii. Inexplicabil.