Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Forum] Początek pisania własnego forum
Forum PHP.pl > Forum > PHP
MaestroS
Przeglądałem niedawno strukturę myBB i tak myślę, czy moja koncepcja jest dobra.

Nie jestem profesjonalistą, aczkolwiek w PHP siedzę już od 5 lat. Myślę nad napisaniem kilku projektów do mojego portfolio (forum, CMS, galeria, dziennik szkolny).

Sam początek wygląda tak:

  1. <?
  2. /* Index file */
  3. //Enable buffor
  4. @ob_start() or die("Buffor initialization has failed.");
  5.  
  6. //Enable sessions
  7. @session_start() or die("Session initialization has failed.");
  8.  
  9. //Define constants
  10. define("_nBB_RootDir", dirname(__FILE__));
  11. define("_nBB_CurrentFile", __FILE__);
  12. define("_nBB_Version", 011);
  13.  
  14. //Load pre-core
  15. require_once "inc/classes/init.php";
  16.  
  17.        //Load constant modules
  18.        if (@!file_exists("inc/const_modules.php")) {
  19.            die("Unable to open pre-definition file of constant modules.");
  20.        } else {
  21.            require_once "inc/const_modules.php";
  22.        }
  23.  
  24.        //Check for required directories
  25.        for ($i=0; $i<count($sys_const_dirs); $i++) {
  26.            if (@is_dir($sys_const_dirs[$i]) == FALSE) {
  27.                die("Directory [".$sys_const_dirs[$i]."] could not be found.");
  28.            }
  29.        }
  30.  
  31.        //Check availability of constant modules and attach them
  32.        for ($i=0; $i<count($sys_const_modules); $i++) {
  33.            if (@!file_exists($sys_const_modules[$i])) {
  34.                die("Unable to open ".$sys_const_modules[$i]);
  35.            } else {
  36.                require_once $sys_const_modules[$i];
  37.            }
  38.        }
  39.  
  40.        //Check for availability of constant classes and attach them
  41.        for ($i=0; $i<count($sys_class_list); $i++) {
  42.            if (@!file_exists("inc/classes/".$sys_class_prefix.$sys_class_list[$i].".php")) {
  43.                die("Class ".$sys_class_list[$i]." could not be found.");
  44.            } else {
  45.                require_once "inc/classes/".$sys_class_prefix.$sys_class_list[$i].".php";
  46.            }
  47.        }
  48.        
  49. $nBB = new nBB;
  50. $nBB->initialize;
  51.  
  52. $nDB = new mySQL;
  53.  
  54. ?>


Chcę, aby index.php był tym głównym plikiem, moduł takie jak showthread i inne wywoływane będą przez index.php?module=. Tutaj pojawia się moje pytanie: Za każdym wywołaniem index.php będzie ustanawiane połączenie MySQL ($nDB->connect()) - czy to dobre wyjście? Chodzi mi najbardziej o aspekty wydajnościowe. Przy takim rozwiązaniu (index.php?module=) potrzebowałbym pewnych wskazówek. Wykonanie nie jest dla mnie żadną trudnością, ale nigdy wcześniej nie pisałem for internetowych, myBB, phpBB już nie mówiąc o IPB czy vBulletin to tony kodu, którego nie chcę przeglądać, bo jak coś zobaczę, to skopiuję, a chcę, aby kod był moją indywidualną pracą. Was proszę o jakieś rady dotyczące wydajności czy jakiś innych kosmetycznych aspektów.

Pozdrawiam.
erix
Cytat
Tutaj pojawia się moje pytanie: Za każdym wywołaniem index.php będzie ustanawiane połączenie MySQL ($nDB->connect()) - czy to dobre wyjście?

No inaczej za bardzo się nie da. Owszem, jest mysql_pconnect" title="Zobacz w manualu PHP" target="_manual, ale nie każdy serwer obsługuje. Poza tym, cache, cache, cache i jeszcze raz cache, gdzie się tylko da.

Nie rozumiem linijek 18-46 - nie słyszałeś o __autoload" title="Zobacz w manualu PHP" target="_manual...? Poza tym, ukrywanie błędów przez małpę jest bardzo, ale to bardzo nieeleganckie. O każdorazowym liczeniu długości tablicy nie wspomnę.

Jeśli chodzi o aspekty wydajnościowe/rady - skup się na miejscu przechowywania danych, a nie na takich bzdetach. tongue.gif
MaestroS
Poczytam o tym __autoload, bo to dla mnie nowość, ale z tym cache - za prawdę powiadam, ciężko będzie, bo to dla mnie zupełna nowość ...
Fifi209
Cytat(MaestroS @ 20.07.2009, 19:33:48 ) *
Poczytam o tym __autoload, bo to dla mnie nowość, ale z tym cache - za prawdę powiadam, ciężko będzie, bo to dla mnie zupełna nowość ...


Nic trudnego, sam kiedyś pisałem dla siebie klasę do obsługi cache - wcale nic strasznego.
Choć za niedługo chyba zainteresuje się tym: http://pear.php.net/package/Cache_Lite

Moim zdaniem w takich projektach jak forum/cms etc. jest ważne m.in.
  1. Rozmieszenie plików w katalogach
  2. Dobry system cache
  3. Dobra i wydajna struktura dla bazy danych, z relacjami, triggerami etc.
Wiele razy chciałem pisać coś większego, niestety uznałem że swoich założeń nie dam rady (przynajmniej nie sam) zrealizować.
Tak więc nie można sobie zbyt wysokich poprzeczek stawiać jak i rzucać kłód pod nogi.

Powiem, że od pewnego czasu piszę dla siebie klasy, które czasem (według potrzeb) wykorzystuję - i powoli buduje się FW z tego.
MaestroS
Ja nie chce bóg wie jakiego forum pisać. Nie do większego zastosowania ono będzie, tylko do prezentacji i własnej satysfakcji. Poza tym, ja się uczę tylko na ciężkich projektach - inaczej nie potrafię.

Teraz myślę nad tym cache'owaniem. Jak ono ma działać? Co trzeba cache'owac? Co ile trzeba cache'owac? Jak cache przechowywać dla każdego użytkownika?

To trochę skomplikowana sprawa ...
scanner
W samym tylko kodzie, który już pokazałeś naliczyłem 6 małp.
Z taką kontrolą błędów, daleko nie zajdziesz.
MaestroS
Po prostu przyzwyczaiłem się do @ i die() współpracujących ze sobą. Już wiem, że to źle.
erix
Wątek cache'owania wydzieliłem: http://forum.php.pl/index.php?s=&showtopic=126136
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.