Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Bardzo dziwny błąd w zmiennej PHP
Forum PHP.pl > Forum > Przedszkole
Mackos
Wybaczcie tak durnie napisany temat, ale poważnie siedzę kilka godzin i nie mogę znaleźć przyczyny dziwnego zachowania.
Otóż mam system podliczający statystyki serwisu.
Wygląda on mniej więcej tak:
Główny plik
  1. $count = z::licz("Zapytanie do bazy podliczające wyświetlenia");
  2. $count = (int)$count;
  3. if ($count >= $s['count']){
  4. $payment = new Payments();
  5. $rate = $payment->balanceCommision($website, $campaign, $count, 'imp');
  6. if (!empty($rate)) {
  7. z::set("Zapytanie do bazy danych zapisujące podliczone statystyki");
  8. }
  9. }


Metoda balanceCommision() ma w sobie mniej więcej tyle:
  1. $camp = new campaign();
  2. $campaignRates = $camp->getCampaignRates($campaign); // Zwraca zapytanie z bazy o stawki dla kampanii - nie zwraca ich przy $count pobieranym z bazy.
  3. $fullPayRate = (($campaignRates['impressions'] / 1000)*$count);
  4. $adminRate = number_format(($fullPayRate) * (Config::getAdminCommision()), 10);
  5. $publisherRate = number_format(($fullPayRate - $adminRate), 10);

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 sleep.gif to jest możliwe żeby po takim czasie php się gubił?
b4rt3kk
Nie myślałeś, żeby zrobić var_dump-a count w newralgicznych momentach? Tj. tuż po pobraniu oraz tuż po przekazaniu do metody balanceCommision?
Mackos
Zrobiłem, zero szczególnych informacji.
To znaczy $camp->getCampaignRates($campaign); zwraca poprawnie tablice z zapytaniem tylko wtedy kiedy $count jest wpisane na sztywno :/
W skrócie jedyna konkluzja to taka że skrypt przestaje działaś po proawnie po zbyt długim wykonaniu zapytania SQL, bo nie potrafię tego inaczej wyjaśnić.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.