Otóż mam system podliczający statystyki serwisu.
Wygląda on mniej więcej tak:
Główny plik
$count = z::licz("Zapytanie do bazy podliczające wyświetlenia"); $count = (int)$count; if ($count >= $s['count']){ $payment = new Payments(); $rate = $payment->balanceCommision($website, $campaign, $count, 'imp'); z::set("Zapytanie do bazy danych zapisujące podliczone statystyki"); } }
Metoda balanceCommision() ma w sobie mniej więcej tyle:
$camp = new campaign(); $campaignRates = $camp->getCampaignRates($campaign); // Zwraca zapytanie z bazy o stawki dla kampanii - nie zwraca ich przy $count pobieranym z bazy. $fullPayRate = (($campaignRates['impressions'] / 1000)*$count);
Tu zaznaczam powyższy kod wykonuje się w pełni, z::licz() zwraca odpowiedź PDO rowCount(); Dodatkowo rzutuję ją na wartość integer, i wyświetlone wskazuje poprawnie podliczoną wartość.
I teraz tak balanceCommision() zwraca podliczone kwoty (dziesiętne) za określoną liczbę wyświetleń.
I teraz najdziwniejsza kwestia:
Jeśli $count zwraca wynik zapytania z bazy (nawet jeśli potem jest rzutowany na INT) to wartości z balanceCommision są równe 0 , ale jak ręcznie przypiszę do $count dowolną liczbę to podlicza prawidłowo!
Jest ktokolwiek w stanie mi powiedzieć o co może chodzić?
Skrypt jest wywoływany z konsoli (na Debianie), pierwsze zapytanie do bazy wykonuje się 6,5 minuty
