![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 472 Pomógł: 7 Dołączył: 7.12.2005 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Mam kilka pytań dot. cacheowania zapytań DB:
1. Jak rozpoznawać o które SQL chodzi? Ja każde zapytanie strtolow'uję, opróżniam ze znaków ['|"|`] i spacji a potem hash'uję w md5 - hash'em rozpoznaję query i nazywam pliki. Jak zrobić to inaczej, szybciej? Jak wiadomo replace i md5, które korzysta z algorytmów matematycznych, zajmują sporo czasu. 2. Czy sprawdzanie if( $czas_utworzenia_pliku > $aktualny_czas - $interwał ) { z_cache'u } jest dobrym sposobem na sprawdzenie terminu ważności pliku z cache'm? 3. W jaki sposób połączyć klasy db i cache'u? U mnie jeśli zapytanie ma być cache'owane wysyła do własnego fetch'a string, jeśli nie cacheowane - wysyła resource z query. Fetch sprawdza is_string i is_resource. To rozwiązanie jednak do najszybszych nie należy. 4. Pliki z cache'm zapisywać jako zserialiowaną tablicę czy po prostu jako <?php $arr=...; ?> ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 472 Pomógł: 7 Dołączył: 7.12.2005 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Aktualnie przerzuciłem się na strtolower i crc32 gdyż ten jest najszybszym (z moich benchmarków) algorytmem.
Co do kwestii "10 ostatnich minut" - nie wszędzie trzeba używać cache'owania, a w takich wypadkach nawet nie jest to wskazane - więcej czasu zajmować będzie tworzenie plików co chwila niż trwać będzie ich odczyt z bazy. Serialize z tego co się orientuję jest szybszy gdyż jest to konstrukcja zaszyta głęboko w jądro php i przy generacji ciągu czy jego odczytu - funkcja bezpośrednio ładuje dane - bez jakiegokolwiek przekształcania treści ciągu, bez typowania etc. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 31.03.2002 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Jak się mówi: "Każdemu według potrzeb", więc ja będę się upierał przy swoim ;) Ale dzięki za naprowadzenie na crc32, faktycznie jest najszybsze.
Choć nadal gryzie mnie to serialize - czemu jest szybsze od include, wszak też mocno wbudowanego w php... Może to temat na inny topik (albo poszperanie w źródłach). Pozdrawiam. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 12:59 |