Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

5 Stron V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> Cache, [klasa] php5
maciu
post 10.10.2006, 15:38:02
Post #21





Grupa: Zarejestrowani
Postów: 238
Pomógł: 1
Dołączył: 27.08.2003

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


super klasa, tylko przydałaby się jeszcze jedna funkcjonalność. Chodzi o ustawianie katalogów, w jaki mają być wgrywane pliki cache. W tej chwili mozna ustawić jeden katalog w konstruktorze klasy, a według mnie przydałoby się, aby można było ustawiać katalogi np. dla grup, czy nawet pojedynczych plików cache.

Dzięki temu raz, że można by sobie ładnie posegregować pliki, a dwa aplikacja taka byłaby wydajniejsza, gdy będziemy mieli tysiące plików cache.
Go to the top of the page
+Quote Post
nospor
post 11.10.2006, 09:38:20
Post #22





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




Cytat
W tej chwili mozna ustawić jeden katalog w konstruktorze klasy

Nie w konstruktorze klasy, a w konstruktorze sterownika (w sumie tez klasy) operujacego na plikach. No chyba ze mowiles o poprzednich wersjach.

Co do Twojego pomyslu:
fakt, iz jest to w jednym katalogu, to raczej nie wplywa na wydajnosc. A jesli by sie uprzec, by wszystko bylo w innych katalogach, to mozna teraz zdefiniowac kilka obiektow sterownika zapisujacego w plikach, dla kazdego sterownika przypisac inny katalog, a kazdy taki sterownik przypisac do innej grupy. Dzieki temu kazda grupa bedzie miala swoj katalog. Ale to juz bedzie kombinowanie winksmiley.jpg


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

"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
bigZbig
post 16.10.2006, 14:41:11
Post #23





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


Wiesz czego mi tu tylko brakuje smile.gif? Inerfejsu dla sterowników. Poza tym miodzio.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
nospor
post 16.10.2006, 14:47:12
Post #24





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




Cytat
Inerfejsu dla sterowników
Hmmm, rozwin swoją mysl, bo niwząb nie kumam o czym do mnie mowisz winksmiley.jpg Przeciez jest interfejs.

edit:
no i na PW sprawa sie wyjasnila. bigZbig byl po paru glębszych ( winksmiley.jpg ) i niedolukal tego


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

"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
bigus
post 12.05.2007, 16:18:19
Post #25





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 28.04.2006

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


Mam taką sytuację, mam na stronie możliwość komentowania.
Cechuje pobieranie z bazy daty, autora, treść komentarza.
A czy jest możliwość aby zrobić żeby pobierało nowe komentarze ale dopiero wtedy kiedy coś dodał nowy??
A nie po upływie pewnego czasu.
Go to the top of the page
+Quote Post
nospor
post 12.05.2007, 19:43:10
Post #26





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




Cytat
A czy jest możliwość aby zrobić żeby pobierało nowe komentarze ale dopiero wtedy kiedy coś dodał nowy??
A nie po upływie pewnego czasu.

Oczywiscie. Jak ktos doda komentarz, wowczas czyscisz cache. Czyscisz albo caly cache, albo tylko grupe do ktorej naleza komenty, albo tylko dany cache, ktory trzyma komenty. Do wyboru do koloru smile.gif
Metody za to odpowiedzialne to bodajze metody z rodziny Clear... Nie pamietam dokladnie nazw bo nie mam akurat klasy przed soba


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

"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
bigus
post 12.05.2007, 21:12:07
Post #27





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 28.04.2006

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


ok jakoś poszło ale jak chciałem to wykorzystać tutaj Plik
Plik mieści się na forum ale nie chciałem zaśmiecać, plik php tylko dodane rozszerzenie .txt

To pokazuje mi
  1. <?php
  2. Fatal error: Cannot redeclare class cacheexception in /home/test/ftp/cms/components/com_datsogallery/cache/Cache.class.php on line 661
  3. ?>

A jak skasuje
  1. <?php
  2. catch (CacheException $e){
  3. echo '<span style="color:red">'.$e->getMessage().'</span>';
  4. }
  5. ?>

to wyskakuje
  1. <?php
  2. Parse error: syntax error, unexpected T_IF, expecting T_CATCH in /home/test/ftp/cms/components/com_sef/sef.php on line 204
  3. ?>

Gdzie indziej działa np w galerii
już nie mam pomysłu robie przecież tak samo.
Go to the top of the page
+Quote Post
nospor
post 13.05.2007, 18:30:40
Post #28





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




Cytat
Fatal error: Cannot redeclare class cacheexception in /home/test/ftp/cms/components/com_datsogallery/cache/Cache.class.php on line 661

Blad ten oznacza, ze ponownie deklarujesz klase, ktora juz byla deklarowana. Z racji, iż moj CacheException jest deklarowany w tym samym pliku co klasa Cache, a do klasy Cache sie nie czepia, podejrzewam, iż gdzies masz deklarowaną jeszcze inna klase o nazwie CacheException. Gdzie? To juz musisz sam znaleźć.


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

"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
bigus
post 13.05.2007, 19:51:00
Post #29





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 28.04.2006

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


Problem był z ścieżkami;/
dzięki
Go to the top of the page
+Quote Post
wookieb
post 7.02.2009, 16:34:07
Post #30





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Chciałbym tutaj napomnieć o cachowaniu danych w plikach.
Sam osobiście korzystam właściwie tylko z tej metody i ważne jest żeby nie przesadzić z ilością plików w katalogu (ponieważ wtedy cały pomysł Cache na plikach może nie spełniać swojego zadania)
Załóżmy np limit 1000. Przy zapisywaniu pliku szukamy w jego nazwie liczby dzięki której będzie można pogrupować pliki w katalogi.
Wyciągniętą liczbę dzielimy przez maksymalną liczbę plików w katalogu (1000) i stosujemy na niej floor.
Kod
$liczba=floor($liczba/1000);

Oto przykład.

Plik do zapisu object_1 zapisujemy w takiej ścieżce.
object/0/object_1

Natomiast plik object_1035 zapisujemy już w
object/1/object_1035

Mam nadzieję, że mój pomysł komuś się przyda.


--------------------
Go to the top of the page
+Quote Post
rafalp
post 11.02.2010, 22:05:35
Post #31





Grupa: Zarejestrowani
Postów: 224
Pomógł: 18
Dołączył: 4.02.2003
Skąd: Częstochowa

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


Chciałem przetestować klase @Nospor-a, czy ktoś kto jej używa mógłby mnie naprowadzić gdzie mam zmienić zapis ścieżek tak jak napisał @wookieb o post wyżej?


--------------------
Go to the top of the page
+Quote Post
Agares
post 13.02.2010, 19:23:15
Post #32





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 12.02.2010

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


Sam miałem dużo problemów z Cache, ten skrypt je rozwiązał. Dzięki nospor. smile.gif
Go to the top of the page
+Quote Post
nospor
post 15.02.2010, 20:46:11
Post #33





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




@rafalp wersja co ci wysłałem na maila zawiera miedzy innymi:
Sterownik bazujący na plikach pozwala zapisywac obiekty i grupy w postaci:
sciezka/do/obiektu

Tworzone zostają wówczas katalogi sciezka/do a w nich powstaje obiekt cache "obiektu".
Mozesz w ten sposob zarządzac struktura katalogów cache.
Mozesze czyscic wybrany katalog, czyscic raz na jakis czas oraz inne


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

"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
holee
post 26.01.2011, 19:53:14
Post #34





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 26.05.2004
Skąd: Chełm

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


Witam;

Właśnie próbuje ogarnąć tą klasę i prawdę mówiąc ciężko mi to idzie. Potrzebuję jakiegoś przykładu abym mógł się wzorować.
Niech przykładem będzie

Kod
$query = "
        SELECT
            dane
        FROM
            tabela        
        LIMIT 0, 5";

    $result = mysql_query($query);

    echo '<div class="reg">';

    while ($row = mysql_fetch_array($result)) {
    
        echo '<div class="reg_kont">';

        echo '<p>'.$row['tresc'].'</p>';
        echo '<span>przez '.$row[imie].'</span>';
        
        echo '</div>';

    }
    
    echo '</div>';


Jak widać prosty kod.

Teraz próbuję zastosować omawianą klasę:

Kod
    $val = $cache->Get("SELECT dane FROM tabela LIMIT 0, 5", "@queries");
    if (is_null($val)){
        $val = 'tutaj wyniki zapytania';
        $cache->Put("SELECT dane FROM tabela LIMIT 0, 5", $val, "@queries");
        echo 'Wlozono obiekt do cache: select * from tabela <br />';
    }
    else {
        echo 'Pobrano obiekt z cache: select * from tabela : '.$val.' <br />';
    }


i nie wiem co dalej winksmiley.jpg Jak powinien ostatecznie wyglądać kod z zastosowaniem cachu ?
Proszę o pomoc, bo ja kombinuję już różnie od 2 godzin i żadnych efektów. Na dobrym przykładzie myślę, że będę w stanie dalej działać sam.

Pozdrawiam


--------------------
I pamiętaj lepsze jutro było wczoraj a więc porzuć wszelką nadzieję.
Tanie Winka - www.wina.tk
Go to the top of the page
+Quote Post
nospor
post 26.01.2011, 19:56:45
Post #35





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




W miejscu
$val = 'tutaj wyniki zapytania';
masz napisać zapytanie do pobierania danych z bazy, wykonać je (mysql_query()) a następnie wynik (tablica rekordow, obrobiony tekst czy co ty tam sobie zyczysz) zapisać w zmiennej $val


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

"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
holee
post 26.01.2011, 20:04:00
Post #36





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 26.05.2004
Skąd: Chełm

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


Coś takiego ?

Kod
$val = $cache->Get("SELECT dane FROM tabela LIMIT 0, 5", "@queries");
    if (is_null($val)){

        $query = "SELECT dane FROM tabela LIMIT 0, 5";
        $result = mysql_query($query);
        while ($row = mysql_fetch_array($result)) {
            $val = '<div class="reg_kont"><p>'.$row['tresc'].'</p><span>przez '.$row[imie].'</span></div>';
        }
      
        $cache->Put("SELECT dane FROM tabela LIMIT 0, 5", $val, "@queries");
        echo 'Wlozono obiekt do cache: select * from tabela <br />';
    }
    else {
        echo 'Pobrano obiekt z cache: select * from tabela : '.$val.' <br />';
    }


Jak widać nie jestem biegły w kodowaniu, a wręcz odwrotnie. Coś mi ten mój kod się nie podoba ;/ Proszę o wyrozumiałość.


--------------------
I pamiętaj lepsze jutro było wczoraj a więc porzuć wszelką nadzieję.
Tanie Winka - www.wina.tk
Go to the top of the page
+Quote Post
nospor
post 26.01.2011, 20:06:03
Post #37





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




Prawie dobrze.
Nie: $val =
a: $val .=

Widze, że robisz jako nazwe cache tresc zapytania. Zakladam więc, że włączyłeś hashowanie dla grupy @queries?


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

"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
holee
post 26.01.2011, 20:56:33
Post #38





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 26.05.2004
Skąd: Chełm

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


@nospor, powoli coś mi się udaje, wielkie dzięki. Tak, hashowanie mam włączone. Tylko jedno mnie dziwi. Po zaimplementowaniu cachu, z jednego zapytania - zrobiły się3 winksmiley.jpg

Jedno jest w :
Kod
$val = $cache->Get...


Drugie w:
Kod
$val = ...


I trzecie w:
Kod
$cache->Put...


Dużo tego winksmiley.jpg Tak powinno być ?

I jeszcze raz dzięki za pomoc.


--------------------
I pamiętaj lepsze jutro było wczoraj a więc porzuć wszelką nadzieję.
Tanie Winka - www.wina.tk
Go to the top of the page
+Quote Post
nospor
post 26.01.2011, 21:10:34
Post #39





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




Jakie 3? To ze nadales dla obiektu cache nazwę taką samą jak tresc zapytania to już nie moja wina. Mogles sobie obiekt cache nazwa "ala ma kota" i juz bys mial tylko jedno zapytanie tongue.gif

ALbo tresc zapytania wlozyc do zmiennej
$zm = 'SELECT dane FROM tabela LIMIT 0, 5';
I potem posługiwać się tylko zmienną.

Przecież to tylko przykład. Liczyłem, że osoby które to będą czytały wykażą się odrobiną no nie wiem, myslenia? winksmiley.jpg


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

"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
holee
post 27.01.2011, 22:58:47
Post #40





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 26.05.2004
Skąd: Chełm

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


Wszystko działa jak należy. pomogłeś mi wiele zrozumieć, ale mam jeszcze jedno pytanko odnośnie organizacji plików cachu.

Chciałbym aby pliki danej grupy zapisywały się w oddzielnych folderach i widzę, że Twoja klasa to umożliwia - jednak nie do końca mi to działa ;/

Otóż owszem tworzy nowy folder, ale umieszcza w nim tylko plik @test

Kod
    
require('Cache.class.php');
require('drivers/CacheFileDriver.class.php');

$cache = new Cache();
$cache->AddDriver('fileDriver',new CacheFileDriver('Cache'));

$val = $cache->Get('folder/nazwa', 'folder/@test');
    if (is_null($val)){
        $val = 'tutaj wyniki zapytania';
        $cache->Put('folder/nazwa', $val, 'folder/@test');
    }
    else {
        echo $val;
    }


O czymś zapomniałem ?

Pozdrawiam


--------------------
I pamiętaj lepsze jutro było wczoraj a więc porzuć wszelką nadzieję.
Tanie Winka - www.wina.tk
Go to the top of the page
+Quote Post

5 Stron V  < 1 2 3 4 > » 
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 - 10:30