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

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*