OpenAds 2.0
Dość stary skrypt (może występować także pod nazwą phpAdsNew) do tworzenia kampanii reklamowych (pokazywanie bannerów, naliczanie wyświetleń i klinięć). Skrypt ma mały defekt – traktuje datę wewnętrzną MySQL (i sposób w jaki jest obsługiwana) jako coś niezmiennego. W przypadku zmiany wersji bazy danych może wystąpić problem z naliczaniem wyświetleń.
Tabela ze statystykami ma następującą postać:
views / clicks / day / hour / bannerid / zoneid / source
Kolumna day zawiera datę zapisaną jako: 2010-03-13. Skrypt naliczający wyświetlenia wykonuje operację views = views + 1 dla rekordu spełniającego warunki: bannerid = x, zoneid = y, source = z, day = [data] i hour = b. Zapytanie to zostanie wykonane tylko wtedy, gdy wszystkie te warunki zostaną spełnione. Starsza wersja MySQL przyjmowała bez szemrania wartość [data] = NOW() i uaktualniała odpowiedni rekord. W przypadku nowszej wersji następuje porównanie dat np.: 2010-03-13 z 2010-03-13 12:03:27. Porównanie uzyskuje wynik „fałsz”, co skutkuje pominięciem wykonania naliczenia. Jeżeli spojrzy się na statystyki w panelu administracyjnym OpenAds, to zmieniają się one o 1 raz na godzinę.
Naprawa polega na odnalezieniu w pliku libraries/lib-log.inc.php w okolicy linii 175 tekstu
day = NOW()
i zmianie na np.
day = curdate()
Ostatecznie linia będzie miała postać:
$phpAds_config['tbl_adstats']." SET views = views + 1 WHERE day = curdate()
Po odświeżeniu strony ze statystykami liczby wyświetleń powinny zmieniać się bardziej dynamicznie.
Dodaj komentarz