Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Długość życia pola klasy?
Largo
post
Post #1





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

Ostrzeżenie: (0%)
-----


Witam,

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.

  1. /* Cache!
  2. * BugFix: DDoS availability!
  3. * TODO: Compare arrays to check for newer transaction
  4. */
  5. if( ( is_array( $this->transactionsCache ) && count( $this->transactionsCache ) ) )
  6. {
  7. $returnData[] = $this->transactionsCache;
  8. }
  9. else
  10. {
  11. /* Query... */
  12. $this->SQL->getTransactionsData( $memberToLoad, $sortKey, $sortOrder, $currentMonth, $actualPage, $perPage );
  13.  
  14. if( $this->DB->getTotalRows() )
  15. {
  16. while( ( $row = $this->DB->fetch() ) )
  17. {
  18. /* Add to HTML Variable */
  19. $returnData[] = $logs->parseTransaction( $row, $memberToLoad );
  20. }
  21.  
  22. /* Add to Cache */
  23. $this->transactionsCache[] = $returnData;
  24. }
  25. }


Mam nadzieję, że wskażecie mi błąd i pomożecie.

Pozdrawiam,
Largo

Ten post edytował Largo 14.02.2010, 11:16:43
Go to the top of the page
+Quote Post
l0ud
post
Post #2





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Najlepiej by było, jakbyś dał gdzieś dał gdzieś cały plik tej klasy, albo chociaż uproszczony kod, który wywołuje problem.

...czy przed całym blokiem else, $this->transactionsCache już istnieje (została zadeklarowana)?. No i oczywiście pamiętasz o wczytaniu cache do $this->transactionsCache przy następnym wywołaniu skryptu?

edit: bah, wygląda na to że PHP powinien trzymać składową klasy nawet bez jej zadeklarowania. Daj pełniejszy kod klasy.

Ten post edytował l0ud 14.02.2010, 22:38:39
Go to the top of the page
+Quote Post
Largo
post
Post #3





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

Ostrzeżenie: (0%)
-----


Witaj,

Problemik raczej nie aktualny... Nie wiedziałem, że to co chcę osiągnąć to cachowanie żądań Ajax :-) Po prostu, chciałem to zrobić na składowej klasy, ale to nie ma sensu, wystarczy w JS zapamiętywać dany wynik i w nim sprawdzać :-) Dziękuje za odpowiedź, ale jest ona zbędna :-)

Temat uważam za rozwiązany, chyba, że masz pewne wątpliwości, to mogę podesłać pełny kod?

Pozdrawiam,
Largo
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.09.2025 - 14:17