![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 15.04.2007 Skąd: klikash ? A stond, z tamtond, ze wszond Ostrzeżenie: (0%) ![]() ![]() |
uwaga: wiadomość została wysłana po konsultacji z administracją forum
------------------------------------------------------ Witam radośnie wszystkich forumowiczów. Chciałbym Wam zaproponować do oceny mój program, MODa, czy jak to nazwać - o nazwie PHP Hypercacher. Proszę w zasadzie nie tylko o ocenę, ale o konstruktywną krytykę i (ewentualnie) dorzucenie swojego kodu/swoich zmian do projektu i zmienianie tego co Wam się nie podoba. Pamiętajcie - to jest wolne oprogramowanie (GPL). Nie podoba się ? Masz pełną wolność używania, modyfikacji, dostosowywania do siebie. Do czego służy ? Do przyśpieszania wszelakiego rodzaju witryn napisanych w PHP. Skrypty PHP Hypercachera zostały tak zaprojektowane, aby zmaksymilizować kompatybilność z różnymi skryptami PHP, czego dowodem może być to, że działa z następującymi CMSami : * PHP Fusion wersja 6.0.5 * MediaWiki 1.8.2 (WikiPedia) * PHPBB 2.0.22 * Joomla! wersja 1.0.11 (popularny w komercyjnych kręgach otwarty CMS - oparty na Mambo) * Mambo wersja 4.6.1 * PHP Nuke wersja 7.9 * Wordpress wersja 2.0.5 (do blogów) * BtitTracker 1.4 By BitTeam * [dopisz tutaj jakiego CMSa chcesz - po niewielkiej modyfikacji powinien na 100% zadziałać] Co robi ten mod ? Przyśpiesza działanie każdego z CMSów i witryn WWW. Każdy skrypt z rodziny PHP-Hypercacher : - Zmniejsza obciążenie serwera HTTP - Zmniejsza obciążenie bazy MySQL - Jest bardzo prosty w konstrukcji i bardzo prosty w instalacji. Zachęcam gorąco do pobierania i zabawy z moim programem oraz przyłączenia się do rozwoju mojego projektu. Strona wyjaśniająca czym jest PHP Hypercacher: http://tinyurl.com/2stq4j Adres bezpośredni do ściągnięcia PHP-Hypercachera: http://tinyurl.com/2thp6t Paczka do pobrania zawiera nie tylko PHP-Hypercachera, ale i PEŁNĄ DOKUMENTACJĘ w formacie ODF (wymagane OpenOffice). Jak mówiłem, instalacja tego MODa jest banalna, więc NIKT z was nie będzie miał z tym problemów. Instalacja polega najczęściej na wklejeniu dwóch fragmentów kodu w dwóch różnych miejscach w waszym serwisie. Nie trzeba kopiować żadnych plików, nie trzeba grzebać w bazie, żadnych includów, żadnych obiektów - nic. Paczka zawiera też instrukcje instalacyjne do najpopularniejszych CMSów wymienionych powyżej. Jeżeli ktoś chce zobaczyć jak działa PHP-Hypercacher GZIP z PHP-Fusion, Joomlą, PHPBB, MediaWiki oraz moją stroną domową (będzie tego więcej), to zapraszam też na stronę testową CMSów: http://tinyurl.com/2j9fr4 Zapraszam też na stronę http://tinyurl.com/3xn792 (200.000 unikalnych użytkowników i kilka milionów odsłon miesięcznie), gdzie moje skrypty z rodziny PHP Hypercacher działają już nieprzerwanie od 5 miesięcy na hostingu współdzielonym (!). Moje forum zawiera też FAQ do najczęściej zadawanych pytań: FAQ ogólne: http://tinyurl.com/2gr29k FAQ developerskie: http://tinyurl.com/37lnz4 Gorąco pozdrawiam. SoofMan aka Kamil Sofowora Ten post edytował SoofMan 25.07.2007, 23:10:44 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 442 Pomógł: 0 Dołączył: 27.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Przejrzałem kod i mam parę uwag (abstrahując od zysków wydajnościowych):
1. Po uruchomieniu dostaję trochę komunikatów Kod Notice: Use of undefined constant sf_fdec1 - assumed 'sf_fdec1' in /home/UDAT/php_hypercacher_standard_v1.920_DEV.php on line 22 Notice: Use of undefined constant sf_dnchx - assumed 'sf_dnchx' in /home/UDAT/php_hypercacher_standard_v1.920_DEV.php on line 34 Notice: Use of undefined constant sf_cltx - assumed 'sf_cltx' in /home/UDAT/php_hypercacher_standard_v1.920_DEV.php on line 142 Zamiast if(sf_dnchx<1) użyj defined" title="Zobacz w manualu PHP" target="_manual('sf_dnchx') 2.
Nie mógłbyś użyć function_exists" title="Zobacz w manualu PHP" target="_manual? 3. Zamiast $_GET I $_POST możesz użyć $_REQUEST, a także zamiast
i kolejnych
sprawdzaj za pomocą in_array" title="Zobacz w manualu PHP" target="_manual lub isset" title="Zobacz w manualu PHP" target="_manual($_REQUEST[$poszukiwany_string] ) w zależności gdzie chcesz szukać tych "parametrów" 4. Na samym końcu masz:
W każdym wypadku $m w ostatniej linii jest ustawione na stringa, tak więc zawsze if(m) będzie spełnione 5. Czemu wychodzisz z błędnego założenia, że wszyscy chcą mieć na samym końcu stopkę do twojego skryptu, jeśli są takie wymagania licencyjne nie prościej byłoby pozostawić decyzję co do umiejscowienia linku zwrotnego programiście? Wymuszasz w ten sposób modyfikację skryptu przez potencjalnych użytkowników, chcących zachować jakieś standarty HTML'a czy XHTML'a. 6. Nie mógłbyś używać jakiś normalnych nazw zmiennych, jeśli chcesz użyj phpHypercacher_cacheRefreshTime, ale nie $vt, bo to strasznie zmniejsza czytelność kodu @SoofMan: Pytałeś czemu nikt tego wcześniej nie napisał? Otóż napisał zobacz jpCache - ten sam pomysł, może też cache'ować w MySQL'u. Bardzo dawno nie używałem. Mam nadzieję, że były to konstruktywne uwagi i nie zostaną odczytane jako próbę zmieszania Ciebie z błotem Ten post edytował UDAT 30.04.2007, 12:01:20 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 15.04.2007 Skąd: klikash ? A stond, z tamtond, ze wszond Ostrzeżenie: (0%) ![]() ![]() |
Mam nadzieję, że były to konstruktywne uwagi i nie zostaną odczytane jako próbę zmieszania Ciebie z błotem Skądże znowu. Twoje uwagi uważam za niezwykle cenne i większość z nich mam zamiar wprowadzić w życie. Patrz niżej. Przejrzałem kod i mam parę uwag (abstrahujując od zysków wydajnościowych): 1. Po uruchomieniu dostaję trochę komunikatów Kod Notice: Use of undefined constant sf_fdec1 - assumed 'sf_fdec1' in /home/UDAT/php_hypercacher_standard_v1.920_DEV.php on line 22 Notice: Use of undefined constant sf_dnchx - assumed 'sf_dnchx' in /home/UDAT/php_hypercacher_standard_v1.920_DEV.php on line 34 Notice: Use of undefined constant sf_cltx - assumed 'sf_cltx' in /home/UDAT/php_hypercacher_standard_v1.920_DEV.php on line 142 Zamiast if(sf_dnchx<1) użyj defined" title="Zobacz w manualu PHP" target="_manual('sf_dnchx') Hmmmm.... Wtedy będę musiał sprawdzać dwa warunki zamiast jednego. Najpierw defined() a potem jeszcze sprawdzenie czy (sf_dnchx<1). Sprawdzanie tylko czy coś jest zdefiniowane chyba nie będzie dobrą praktyką. A czy sprawdzanie dwóch warunków nie będzie wolniejsze od sprawdzania jednego (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Chyba muszę przeprowadzić benchmarki. 2.
Nie mógłbyś użyć function_exists" title="Zobacz w manualu PHP" target="_manual? W mordę. Że też na to nie wpadłem. W innych skryptach używam function_exists(), ale jakoś dziwnie tutaj nie przyszło mi do głowy. Propozycja będzie wdrożona w jednej z następnych wersji 3. Zamiast $_GET I $_POST możesz użyć $_REQUEST, a także zamiast
i kolejnych
To akurat było już proponowane. Niestety nie da się tak. Musi istnieć rozróżnienie między przenoszeniem wartości w polach GET i POST. Przecież w jakimś skrypcie strona może wyświetlać się odmiennie w zależności czy jakaś wartość jest w tablicy GET czy POST. sprawdzaj za pomocą in_array" title="Zobacz w manualu PHP" target="_manual lub isset" title="Zobacz w manualu PHP" target="_manual($_REQUEST[$poszukiwany_string] ) w zależności gdzie chcesz szukać tych "parametrów" To było już proponowane. Zastanawiam się nad tym i myślę że wdrożę to w jednej z następnych wersji. Propozycja będzie wdrożona w jednej z następnych wersji 4. Na samym końcu masz:
W każdym wypadku $m w ostatniej linii jest ustawione na stringa, tak więc zawsze if(m) będzie spełnione 100% racji, ale nie zakładam że komunikaty DEBUGgowania będą w tym skrypcie wiecznie... Z góry zakładam że ktoś może je wyciąć. Optymalizacja optymalizacją, ale pewna funkcjonalność też powinna być zachowana... Hmmm.... pomyślę o tym 5. Czemu wychodzisz z błędnego założenia, że wszyscy chcą mieć na samym końcu stopkę do twojego skryptu, jeśli są takie wymagania licencyjne nie prościej byłoby pozostawić decyzję co do umiejscowienia linku zwrotnego programiście? Wymuszasz w ten sposób modyfikację skryptu przez potencjalnych użytkowników, chcących zachować jakieś standarty HTML'a czy XHTML'a. 0. Licencja PHP Hypercachera nie wymaga ani nie nakazuje umieszczania tego linka w stopce. Jednakże byłoby mi bardzo miło gdybyś używając Hypercachera, odwdzięczył się w jakiś sposób za pracę włożoną w mój projekt. 1. Nie każdy zawsze pamięta o tym żeby dodać linka do stopki swojej strony, a nawet wielu ludzi nie zrobi tego ze zwykłego lenistwa lub braku czasu 2. Nie każdy potrzebuje SUPER-STRICTowego HTMLa z validacją. Nie każdego to obchodzi (a większości zwykłych ludzi i webmasterów to zupełnie nie obchodzi) 3. Jak ktoś już jest programistą/webmasterem, zna się na tym i go to obchodzi to może sobie bezproblemowo wyciąć. Licencja tego nie zabrania. 4. CMS PHP Fusion działa w identyczny sposób. Standardowo wstawia linka do stopki, a jak komuś się nie podoba to może sobie wyciąć. Stąd wziąłem właśnie ten pomysł. 5. Gdybym chciał wstawić linka zgodnie z zasadami HTML, musiałbym do skryptu dodać coś takiego: Kod .str_replace('</body>', '[KOD HTML STOPKI HYPERCACHERA]</body>', ob_get_contents()) A to byłoby duuuużo wolniejsze, już nie mówiąc o tym że jakaś niepoprawna strona może nie mieć tagu kończącego </body> i ta metoda też zawiedzie. Więc dlatego wolę pozostawić wycięcie lub przemieszczenie kodu w inne miejsce programiście który będzie Hypercachera używał. 6. Nie mógłbyś używać jakiś normalnych nazw zmiennych, jeśli chcesz użyj phpHypercacher_cacheRefreshTime, ale nie $vt, bo to strasznie zmniejsza czytelność kodu Zgadzam się. Najpierw muszę jednak napisać optymalizator skryptów, który będzie automatycznie skracał nazwy zmiennych i wycinał niepotrzebne znaki (spacje, końce linii). Wycinanie komentarzy, spacji i końców linii żeby wyprodukować wersję "obciętą" i tak już mnie morduje czasowo, a jeszcze gdybym miał nazwy zmiennych skracać przy każdej nowej wersji, to już by mnie w ogóle zabiło... (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) . Optymalizator skryptów php jest już w drodze Propozycja będzie wdrożona w jednej z następnych wersji @SoofMan: Pytałeś czemu nikt tego wcześniej nie napisał? Otóż napisał zobacz jpCache - ten sam pomysł, może też cache'ować w MySQL'u. Bardzo dawno nie używałem. Hmmmm.... niby trochę podobne, ale moja koncepcja bardzo się różni od jpCache... 1. Nagłówek i stopka skryptu - tego nie ma w koncepcji jpCache 2. Maksymalna Prostota Użytkowania i pełna automatyzacja - o jpCache tego powiedzieć nie można 3. W hypercacherze nie ma żadnych includów ani klas @SoofMan: Czemu nie zamkniesz funkcjonalności swojego skryptu w klasę, konfigurowalną przez np. settery, umożliwiając keszowanie nie tylko całych stron, ale i elementów? Wersje przed 1.920 - bazowa i 1.0 RC1 Refresher mogą być używane wielokrotnie w kodzie (ponieważ nie używają STAŁYCH tylko zmiennych)... A co do klasy, to jest całkiem dobry pomysł: Propozycja będzie wdrożona w jakimś MODZie lub BRANCHu. Niestety klasa nigdy nie będzie tak szybka jak kod wklejony do pliku, ale co zrobić... Ten post edytował SoofMan 30.04.2007, 13:25:21 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 12:53 |