![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Napisałem ją dla siebie, ale może się komuś przyda. A teraz prosiłbym o jakieś uwagi dot. kodu, tj. co by można zmienić, zrobić inaczej. Wydaje mi się, że jak na tą prostotę funkcjonalność jest wystarczająca. (przynajmniej dla mnie) Użycie przykładowe: Najpierw konstruktor:
Parametr pierwszy - ścieżka do folderu cache Parametr drugi - używana kompresja (w tym wypadku brak, lecz "NONE" można zastąpić "BZIP2") a) Dodawanie cache/Zmienianie jego wartości (konstruktor pomijam)
![]()
c) Usuwanie cache
podstrona -> nazwa pliku cache ![]() Ten post edytował fifi209 14.06.2009, 22:54:36 -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 662 Pomógł: 45 Dołączył: 26.03.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Zły dział. Jest dział do ocen.
A co jak będę chciał dodać klasę albo tablicę do cachu ? |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Zły dział. Jest dział do ocen. A co jak będę chciał dodać klasę albo tablicę do cachu ? Do gotowców nie mogłem zaliczyć, chodzi nie tyle o ocenę co sugestie (co zmienić, dodać) Co do pytania:
Działa bez zarzutu. Z klasą też nie widzę problemów:
-------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 31 Pomógł: 7 Dołączył: 14.06.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
osobiście wolalbym pobierać/ustawiać zawartość keszu przez settera/gettera - wtedy w podpowiadaniu składni wyskakują odpowiednie metody.
Przydałoby się też keszowanie nagłówków strony. I nie pogardziłbym możliwością ustawiania czasu życia. edit: hmm... i nigdzie nie widzę phpdoc'a Ten post edytował kamil_biela 14.06.2009, 00:52:28 -------------------- zagr.am - najlepsze flash do zagrania. Codziennie.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
osobiście wolalbym pobierać/ustawiać zawartość keszu przez settera/gettera - wtedy w podpowiadaniu składni wyskakują odpowiednie metody. Przydałoby się też keszowanie nagłówków strony. I nie pogardziłbym możliwością ustawiania czasu życia. edit: hmm... i nigdzie nie widzę phpdoc'a Co za problem zrobić cache nagłówków i zapisać np. jako headers ? Czas życia? Przecież jak np. aktualizujesz coś w bazie to tylko zmieniasz zawartość cache, a jeżeli usuwasz coś z bazy to i wykonujesz destroy() dla danego pliku cache. Czas życia - możesz dorobić przez cron'a (sprawdź kiedy plik został utworzony i po x czasie możesz go usuwać) ![]() -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 31 Pomógł: 7 Dołączył: 14.06.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Co za problem zrobić cache nagłówków i zapisać np. jako headers ? Taa... żaden. Cache_Lite lepsze. Tylko mi w nim brakuje keszowania nagłówków. Czas życia? Przecież jak np. aktualizujesz coś w bazie to tylko zmieniasz zawartość cache, a jeżeli usuwasz coś z bazy to i wykonujesz destroy() dla danego pliku cache. Czas życia - możesz dorobić przez cron'a (sprawdź kiedy plik został utworzony i po x czasie możesz go usuwać) ![]() Heh, tak powiedzmy że zmieniam coś 20 razy na sekundę w bazie danych i za każdym razę robię destroy? Z tym cronem to nie przesadzaj, z natury człowiek leniwy jestem - mam sobie jeszcze zaprzątać głowę cronem, jakbym mógł jedną opcję ustawić? Bez obrazy, ale czy nie popadłeś w samozachwyt nad własnym kodem? Chciałeś propozycje, to masz. Aha, ja bym zwracał null'a zamiast false. Ale to tylko takie już moje bajdurzenie ![]() -------------------- zagr.am - najlepsze flash do zagrania. Codziennie.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Heh, tak powiedzmy że zmieniam coś 20 razy na sekundę w bazie danych i za każdym razę robię destroy? Z tym cronem to nie przesadzaj, z natury człowiek leniwy jestem - mam sobie jeszcze zaprzątać głowę cronem, jakbym mógł jedną opcję ustawić? Bez obrazy, ale czy nie popadłeś w samozachwyt nad własnym kodem? Chciałeś propozycje, to masz. Aha, ja bym zwracał null'a zamiast false. Ale to tylko takie już moje bajdurzenie ![]() Dobrze wiesz, że nie zmieniasz nic 20 razy na sekundę bo by Ci ta baza padła chyba a limity na rok byś wyczerpał w kilka dni. (chyba, że miałbyś swój serwer) Poza tym gdy edytujesz dane, to nie musisz robić destroy. Nad czasem życia pomyśle. Nie nie popadłem w samozachwyt. Zwracać null a nie false, powiedz mi jaką widzisz różnicę? Mi wydawało się wygodniej dostać bool(true or false) Ja cache pierwszy raz użyłem, gdy na stronie musiałem wykonać kilkanaście zapytać do mysql, czas wykonywania tego skryptu to było od 0.8sek do 2sek zależnie od wolnego czasu procesora. Dane były aktualizowane raz na dzień, po dodaniu cache czas wczytywania strony spadł na: 0,00093sek. P.S. Nikt mądry raczej nie użyje cache, przy takim wypadku jak Ty podałeś - już lepiej zoptymalizować bazę i zapytania i pobierać na bieżąco. Na życzenie dorobiony czas życia cache: Tabela sql:
Jeżeli trzeba to dodam później opis jak tego używać. ![]() Ten post edytował fifi209 14.06.2009, 10:00:00 -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
jakies to wszystko malo logiczne... wyglada to tak jakbys chcial wynalezc kolo ktore juz istnieje i probowal ludziom wmowic ze Twoje jest bardziej okragle :| Mało logiczne - mógłbyś rozwinąć tą myśl? Po prostu wolę używać kodu, który ma (z klasą rozszerzającą) 110 linii niż np. cache_lite, gdzie jest grubo ponad 1000 linii i próbują mi wmówić, że to jest wydajniejsze. ![]() -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 31 Pomógł: 7 Dołączył: 14.06.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Kesz który wymaga połączenia z bazą danych? Oczywiście są takie przypadki kiedy coś takiego się przyda, ale to dobre jako opcja.
Jeśli liczysz wydajność w liniach kodu to gratulacje... I mógłbyś zacząć używać jakiś argumentów w dyskusji? Jeśli wystawiasz coś do oceny, to spodziewaj się że wszyscy wytkną braki, co akurat jest lepsze od "och ach, ale słitaśna klasa". -------------------- zagr.am - najlepsze flash do zagrania. Codziennie.
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Kesz który wymaga połączenia z bazą danych? Oczywiście są takie przypadki kiedy coś takiego się przyda, ale to dobre jako opcja. A czemu nie? Dane są trzymane w pamięci, więc z tym problemów nie będzie. Zawsze można napisać inne rozszerzenie trzymające np. w xml (pisałem to z myślą, że mi tego ramu nie braknie) Jeśli liczysz wydajność w liniach kodu to gratulacje... Na pewno, kod bez zbędnych pierdół będzie się szybciej parsował. I mógłbyś zacząć używać jakiś argumentów w dyskusji? Ja czekam na kolejne uwagi, co dodać/usunąć/zmienić. Jeśli wystawiasz coś do oceny, to spodziewaj się że wszyscy wytkną braki, co akurat jest lepsze od "och ach, ale słitaśna klasa". A czy ja oczekuję braw i oklasków? Napisałem na samym początku, że chciałbym wiedzieć czy coś trzeba zmienić etc. P.S. Z miłą chęcią przeczytam propozycję dot. trzymania danych (czas życia cache) [w mysql mogę robić wszystko hurtem] Ten post edytował fifi209 14.06.2009, 11:36:45 -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 31 Pomógł: 7 Dołączył: 14.06.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
A czemu nie? Dane są trzymane w pamięci, więc z tym problemów nie będzie. Zawsze można napisać inne rozszerzenie trzymające np. w xml W keszu chodzi żeby ograniczać zużycie zasobów. Hmm... xml - nie da to za dużego narzutu na parsowanie? Na pewno, kod bez zbędnych pierdół będzie się szybciej parsował. Co nie znaczy że ogólnie będzie szybciej działał. A w cache lite nie ma pierdół ![]() A czas życia możesz wyznaczać na podstawie daty utworzenia pliku. -------------------- zagr.am - najlepsze flash do zagrania. Codziennie.
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
A czas życia możesz wyznaczać na podstawie daty utworzenia pliku. Tak chciałem zrobić, lecz co gdy będę chciał wydłużyć...? Usunąć plik i na nowo tworzyć? W keszu chodzi żeby ograniczać zużycie zasobów. I zamiast np. 10 połączeń z mysql i różnych operacji mam 0 połączeń lub ew. jedno (bo nie każdemu cache trzeba czas życia ustawiać) Hmm... xml - nie da to za dużego narzutu na parsowanie? Zależy jak dużo danych przewidujesz, ja przewiduję (u siebie) max 30 podstron, także parsowanie takiego xml nie byłoby problemem. Poza tym, ja żyję w świecie na którym cały ram i czas procesora mam dla siebie. Ten post edytował fifi209 14.06.2009, 11:51:11 -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 31 Pomógł: 7 Dołączył: 14.06.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Tak chciałem zrobić, lecz co gdy będę chciał wydłużyć...? Usunąć plik i na nowo tworzyć? http://php.net/touch I zamiast np. 10 połączeń z mysql i różnych operacji mam 0 połączeń lub ew. jedno (bo nie każdemu cache trzeba czas życia ustawiać) Ale mógłbyś mieć 0. Czyli lepiej. Zależy jak dużo danych przewidujesz, ja przewiduję (u siebie) max 30 podstron, także parsowanie takiego xml nie byłoby problemem. Chcesz cały kesz trzymać w jednym pliku xml?! Poza tym, ja żyję w świecie na którym cały ram i czas procesora mam dla siebie. Super. Tylko, że my nie o tym. -------------------- zagr.am - najlepsze flash do zagrania. Codziennie.
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Dzięki, potem napiszę kolejne rozszerzenie. Ale mógłbyś mieć 0. Czyli lepiej. Napiszę kolejne to będę mógł mieć zero. Chcesz cały kesz trzymać w jednym pliku xml?! Nie cache, a informacje o czasie życia cache. Super. Tylko, że my nie o tym. Stwierdziłem tylko fakt i miałem przez to na myśli, że przy takich zasobach, dużych różnic nie będzie. (chodziło o parsowanie xml) Ten post edytował fifi209 14.06.2009, 12:09:18 -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 31 Pomógł: 7 Dołączył: 14.06.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Trochę sprzeczne jest ze sobą to co mówisz. Z jednej strony cache_lite złe bo ma 1000+ linii kodu, a zaraz mówisz, że parsowanie XML'a jest spoczko. Gdzie sens?
-------------------- zagr.am - najlepsze flash do zagrania. Codziennie.
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Trochę sprzeczne jest ze sobą to co mówisz. Z jednej strony cache_lite złe bo ma 1000+ linii kodu, a zaraz mówisz, że parsowanie XML'a jest spoczko. Gdzie sens? Nigdy jakoś nie miałem problemów z obciążeniem przy parsowaniu xml. z tymi zasobami potrzebnymi na parsowanie xml to ja bym uwazal... co by sie z reka w nocniku nie obudzic... poza tym nie na kazdy mserwerze sa dostepne rozszerzenia Jak już wspominałem kod piszę, praktycznie tylko dla siebie. Macie jakieś uwagi do kodu? ![]() @edit Obiecałem rozszerzenie oparte na pliku xml (w te klocki nie jestem dobry ale mi jako tako wyszło)
Szablon pliku cache.xml: Kod <?xml version="1.0" encoding="UTF-8"?>
<items> </items> Ten post edytował fifi209 14.06.2009, 22:55:12 -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 31 Pomógł: 7 Dołączył: 14.06.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
setXMLPath, to IMO powinno być w konstruktorze, z wymaganą zmienną path.
Jak zdziedziczę to mam metody $o->destroy() i $o->destroyDie(). Bezsensowne nazewnictwo. Poza tym, z tego co widzę to przed odczytem, muszę dać destroyDie(), które przejdzie przez cały system keszowania? Bzdura. Czyli jak mam 10000 plików keszu, to serwer klęka. To powinno wyglądać tak, że przy odczycie danego elementu keszu, jest sprawdzany tylko jego TTL i usuwany w tym momencie. -------------------- zagr.am - najlepsze flash do zagrania. Codziennie.
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
setXMLPath, to IMO powinno być w konstruktorze, z wymaganą zmienną path. Jak zdziedziczę to mam metody $o->destroy() i $o->destroyDie(). Bezsensowne nazewnictwo. Poza tym, z tego co widzę to przed odczytem, muszę dać destroyDie(), które przejdzie przez cały system keszowania? Bzdura. Czyli jak mam 10000 plików keszu, to serwer klęka. To powinno wyglądać tak, że przy odczycie danego elementu keszu, jest sprawdzany tylko jego TTL i usuwany w tym momencie. Nie wiem co w nazewnictwie jest nie tak. :< Wysłucham Twoich propozycji. Przecież destroyDie odczyta, które są już nieużyteczne i je wywali - fakt mogłem to inaczej rozwiązać, poprawię to w kolejnej wersji. Co do konstruktora, niestety odpada bo musiałbym nadpisać konstruktor z klasy głównej - co za tym idzie niepotrzebny kod + zmiany w dostępie do zmiennych w klasie głównej. Ten post edytował fifi209 14.06.2009, 22:41:01 -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 31 Pomógł: 7 Dołączył: 14.06.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem co w nazewnictwie jest nie tak. :< Wysłucham Twoich propozycji. destroyDie, jest nieintuicyjne. brzmi trochę jak jakieś combo w mortal combat. cleanAll, checkAllLifetime, można pewnie jeszcze coś lepszego wymyślić. Przeciez destroyDie odczyta, które są już nieużyteczne i je wywali - fakt mogłem to inaczej rozwiązać, poprawię to w kolejnej wersji. Fakt, ale przechodzenie po wszystkich elementach mija się ogólnie z celem. Jako ogólna metoda ok, może się przydać, ale przy odczycie pojedynczego elementu mam sprawdzać wszystkie? Co do konstruktora, niestety odpada bo musiałbym nadpisać konstruktor z klasy głównej - co za tym idzie niepotrzebny kod + zmiany w dostępie do zmiennych w klasie głównej. a parent::__construct to już się nie da wywołać? Ten post edytował kamil_biela 14.06.2009, 22:44:39 -------------------- zagr.am - najlepsze flash do zagrania. Codziennie.
|
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Fakt, ale przechodzenie po wszystkich elementach mija się ogólnie z celem. Jako ogólna metoda ok, może się przydać, ale przy odczycie pojedynczego elementu mam sprawdzać wszystkie? Tobie chodzi o usuwanie? ;d To też zmienię. a parent::__construct to już się nie da wywołać? Tak, wpadłem na to zaraz po edycji postu ;d Już część edytowałem, jak masz jakieś jeszcze pomysły to dawaj - może skorzystam. ![]() Jutro przebuduję plik xml, tak żeby nie było potrzebne czytanie element po elemencie. -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 13:02 |