Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

5 Stron V  « < 3 4 5  
Reply to this topicStart new topic
> Cache, [klasa] php5
nospor
post 11.01.2012, 19:50:43
Post #81





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Hehe, ale słowo "Recursive" mogło dać ci trochę do myślenia wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Lukaszpl
post 23.02.2012, 09:32:44
Post #82





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 12.01.2012

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


Świetna sprawa z tą klasą do cache. Wdrożenie nie jest przesadnie skomplikowane, co mi się podoba. Mam dwa pytania:

1. Jeśli załaduję jakieś dane do pamięci operacyjnej z czasem na 5 minut i później usunę plik php w którym wywołałem klasę z ładowaniem danych do pamięci, co się stanie? Zostaną te dane w pamięci czy zostaną one usunięte po 5 minutach? W przypadku cache z wykorzystaniem danych na dysku one zostają dopóki nie wywołam ponownie danego pliku php z daną grupą cache.
2. Chciałbym pewne dane ładować do pamięci operacyjnej i tutaj pojawia się kwestia tego co się stanie gdy zabraknie miejsca w pamięci operacyjnej serwera? Tak pozatym, w jaki sposób mogę zweryfikować ilość dostępnej pamięci?
Go to the top of the page
+Quote Post
nospor
post 23.02.2012, 09:41:48
Post #83





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Mówisz o sterowniku APC?

ad1) Będzie tak samo jak z plikiem
ad2) To apc zarządza tym. Gdy mu brakuje pamięci to.... nie pamiętam smile.gif Kiedyś się bawiłem chyba na tę okazję, i jakoś sobie radził. Kasował stare wpisy czy może coś podobnego. Naprawdę teraz tego nie pamiętam.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Lukaszpl
post 23.02.2012, 14:36:30
Post #84





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 12.01.2012

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


Jaki jest maksymalny czas dla cache w pamięci i dyskowej? Mogę ustawić na przykład wartość 86400 (co będzie oznaczać 24 godziny), albo jeszcze więcej?

Ten post edytował Lukaszpl 23.02.2012, 14:36:52
Go to the top of the page
+Quote Post
nospor
post 23.02.2012, 14:40:50
Post #85





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




A możesz ustawić nawet i dwa lata jak masz taką ochotę smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
jarod21
post 11.11.2013, 13:34:26
Post #86





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 14.04.2012

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


Witam,
Jestem początkujący i mam pytanie:
Pobieram dane i zapisuje je do pliku w kataogu np Cache/user/user_1/@queries
- dane zapisują się w pliku Cache a nazwy danych w Cache/user/user_1/@queries dlaczego dane nie zapisuję się tam gdzie nazwy danych?
- jeśli chcę wybrać folder w CacheFileDriver("Cache/user/user_1") który nie istnieje to nie tworzy go wyskakuje błąd, muszę sprawdzać czy plik istnieje tworzyć go i dopiero ustawiać ścieżkę w CacheFileDriver . Gdzie zmienić skrypt CacheFileDriver.class.php aby dodawał foldery automatycznie?

edit:
przy ustawieniu CacheFileDriver("Cache/user/user_1") wyskakuje błąd :
Warning: mkdir() [function.mkdir]: No such file or directory in /drivers/CacheFileDriver.class.php on line 39
Can't create file/catalog: Cache/user/user_1

Ten post edytował jarod21 11.11.2013, 17:25:10
Go to the top of the page
+Quote Post
nospor
post 12.11.2013, 07:02:44
Post #87





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Katalogi tworzą sie automatycznie. Widac skrypt nie ma prawa do tworzenia tam katalogow

Cytat
dane zapisują się w pliku Cache a nazwy danych w Cache/user/user_1/@queries dlaczego dane nie zapisuję się tam gdzie nazwy danych?
Dane zapisuja sie tam gdzie im kazesz. Jak w nazwie danej nie podasz sciezki do katalogu to zapisze sie w katalogu glownym. Przejrzyj przyklady dolaczone do paczki.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
jarod21
post 12.11.2013, 10:40:31
Post #88





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 14.04.2012

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


Wiem przeglądałem kod i dziwi mnie że przy CacheFileDriver("Cache/user/user_1") wyskakuje błąd a przy $cache->AddGroup('user/user_1/@queries', array('lifetime'=>month, 'driver'=>'fileDriver','hashid'=>true)); i zapytaniu $data = $cache->Get($zapytanie1,'user/user_1/@queries'); tworzy katalogi i podkatalogi bez błędu.
Go to the top of the page
+Quote Post
nospor
post 12.11.2013, 10:57:20
Post #89





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Poniewaz CacheFIleDriver nie tworzy zagniezdzonych katalogow ,tylko co najwyzej jeden. Gdy tworzylem klase to w zamysle do cacheFIleDriver mialo sie zapodowac katalog glowny na cache, a dopiero grupy mogly sie zagniezdzac jak im sie podoba


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
jarod21
post 6.01.2015, 22:41:23
Post #90





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 14.04.2012

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


Witam,
Zrobiłem test cache i wygląda, że jest 2x wolniejszy niż zapytania do bazy (baza ponad 130 000 wierszy.)
Zapytuję o 3 wartości w pętli 5000 razy.
Cache ma 4 pliki - zapytania i 3 pliki z danymi.
Zapytania do bazy to ok 4 sek.
Zapytania z cache to ok 8 sek.
Wydawało mi się, że z cache powinno lecieć szybciej.
Z czego wynika taka różnica questionmark.gif

Pozdrawiam Jarek
Go to the top of the page
+Quote Post
nospor
post 7.01.2015, 08:02:27
Post #91





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Byłoby naprawde miło jakbyś uraczył nas kodem... skad mamy wiedziec gdzie lezy błąd.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
jarod21
post 7.01.2015, 11:30:37
Post #92





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 14.04.2012

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


Kod poniżej

  1.  
  2. require('Cache.class.php');
  3. require('drivers/CacheFileDriver.class.php');
  4.  
  5. $db_server = 'localhost'; // server name
  6. $db_user = ''; // user name
  7. $db_pass = ''; // user password
  8. $db_name = 'baza'; // database name
  9.  
  10.  
  11. function getmicrotime()
  12. {
  13. $microtime = explode(' ', microtime());
  14. return $microtime[1] . substr($microtime[0], 1);
  15. }
  16.  
  17. function sql_connect($db_server, $db_user, $db_pass, $db_name) {
  18. if (mysql_connect($db_server , $db_user, $db_pass) and mysql_select_db($db_name)) {
  19. mysql_query("SET NAMES 'utf8'");
  20. $status = true;
  21. }
  22. else {
  23. $status = false;
  24. }
  25. return $status;
  26. }
  27.  
  28.  
  29. // set_time_limit(1200);
  30.  
  31. if(sql_connect($db_server, $db_user, $db_pass, $db_name)){
  32.  
  33. $data1 = array(92246,72682444,83043112);
  34.  
  35. $ile = count($data1);
  36.  
  37. $opcja = $_GET['o'];
  38.  
  39. $time_start = getmicrotime();
  40.  
  41.  
  42. if($opcja == 1){
  43.  
  44. try {
  45. //stworzenie obiektu cache.
  46. $cache = new Cache();
  47. $cache->AddDriver('fileDriver',new CacheFileDriver('Cache'));
  48.  
  49. $cache->AddGroup('@queries', array(
  50. 'lifetime'=>86400,
  51. 'driver'=>'fileDriver',
  52. 'hashid'=>true
  53. ));
  54.  
  55. for($j=0;$j<5000;$j++){
  56. for($i=0;$i<$ile;$i++){
  57.  
  58. $queries = "select * from katalog WHERE opcja = ".$data1[$i];
  59.  
  60. $val = $cache->Get($queries, '@queries');
  61. if (is_null($val)){
  62. $res = mysql_query($queries);
  63. $data = array();
  64. while ($row = mysql_fetch_array($res)){$data[]= $row;}
  65. $cache->Put($queries, $data, '@queries');
  66. }
  67. else {
  68. }
  69. }
  70. }
  71. }
  72. catch (CacheException $e){
  73. echo '<span style="color:red">'.$e->getMessage().'</span>';
  74. }
  75. }
  76. else {
  77. for($j=0;$j<5000;$j++){
  78. for($i=0;$i<$ile;$i++){
  79. $queries = "select * from katalog WHERE opcja = ".$data1[$i];
  80. $res = mysql_query($queries);
  81. $data = array();
  82. while ($row = mysql_fetch_array($res)){$data[]= $row;}
  83. }
  84. }
  85. }
  86. }
  87.  
  88. $time_stop = getmicrotime();
  89.  
  90. $roznica = $time_stop - $time_start;
  91. echo 'Czas wczytywania pliku: ' . $roznica;
  92.  
Go to the top of the page
+Quote Post
Pyton_000
post 7.01.2015, 11:55:23
Post #93





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Może być szybsze przez to że MySQL robi cache zapytania, a że wykonujesz je xxxx razy pod rząd to już sobie z cache zasysa.
Dodaj SQL_NO_CACHE po SELECT.
Poza tym cache nadaje się do bardziej skomplikowanych zapytań niż zwykły select który pierdnie wink.gif I w tym wypadku minimalizuje ilość zapytań samych w sobie, a nie szybkość (bo tu nie ma co przyspieszać)
Go to the top of the page
+Quote Post
nospor
post 7.01.2015, 11:56:12
Post #94





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




1) Do cache powinno się wkładać raczej jakies wieksze kawałki, a nie malutkie pojedyncze rekordy
2) Do cache sie powinno wkladac dane, ktorych generowanie zajmuje stosunkowo duzo czasu a nie ułamek micro sekundy. W takim wypadku czasami cache nie ma sensu


Mi Twoj test wypada na korzysc cache, gdzie czas cache to ok 0.68420791625977 zas czas zapytan to ok 1.0938959121704
Oczywiscie wyniki te mogą być różne w zależnosci od posiadanego dysku, pamieci, procesora itp i moze sie okazac, że przy tak banalnych i szybkich zapytaniach, cache moze dzialac dluzej.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

5 Stron V  « < 3 4 5
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 09:38