Właśnie borykam się z problemem sortowanie tabeli, która ma działać w czasie rzeczywistym. O ile sortowanie działa o tyle nie mogę poradzić sobie z problemem Cache. Poniższy kod to część mojego kodu z Ajax Handler, który ma pobierać dane z bazy, ale jeżeli to pierwsze uruchomienie i nie ma danych w tablicy. O dziwo, po wywołaniu else, zapisuje do pola klasy, ale poza else zawartość tablicy znika i nie idzie jej przywrócić, dlaczego?
Próbowałem na lokalnych zmiennych, ale to nie miało sensu, więc użyłem pola klasy do tego. Czy powinienem używać referencji jak mi znajomy zasugerował? Jeżeli idę w zupełnie złym kierunku z Cache, proszę o inne porady. Nie mogę zostawić tego problemu luzem, ponieważ jeżeli nie będę dodawał do Cache, każde użycie sortowania wywoła zapytanie MySQL, a zakładając, że wejdzie do 100 osób w swoje transakcje i kliknie 3 razy to w ciągu paru minut mamy 300 zapytań, a samo zapytanie nie jest lekkie.
/* Cache! * BugFix: DDoS availability! * TODO: Compare arrays to check for newer transaction */ { $returnData[] = $this->transactionsCache; } else { /* Query... */ $this->SQL->getTransactionsData( $memberToLoad, $sortKey, $sortOrder, $currentMonth, $actualPage, $perPage ); if( $this->DB->getTotalRows() ) { while( ( $row = $this->DB->fetch() ) ) { /* Add to HTML Variable */ $returnData[] = $logs->parseTransaction( $row, $memberToLoad ); } /* Add to Cache */ $this->transactionsCache[] = $returnData; } }
Mam nadzieję, że wskażecie mi błąd i pomożecie.
Pozdrawiam,
Largo