Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V  < 1 2  
Reply to this topicStart new topic
> Jak lepie pisac? Skypty osobno czy index.php?skypt, Pytanie do prof
qbuz
post 8.01.2006, 18:40:35
Post #21





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 4.02.2004

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


@ghostrider:
Cytat
jesli mamy do czynienia z serwisem ktory ma wytrzymac 5 hitow na sekunde to puszczanie wszystkiego przez index.php przysporzy nie lada problemow.

Nawet jeśli by tak było, to przecież w tych osobnych plikach i tak będzie prawodpodobnie include'owany/require'owany jakiś inny plik, wspólny dla wszystkich "podstron", nie?

Tak więc będziemy np. mieć
plik_odpowiedzialny_za_rejestracje.php
jakis_tam_inny.php

..to i tak każdy plik z osobna będzie wywoływał np. 'header.php', więc ten 'header.php' też będzie miał 5 hitów/sek.


Poza tym w takich sytuacjach powinno się pomyśleć o jakimś cache'owaniu (i przy okazji: przy cacheowaniu nie jest problemem, że index.php jest wywoływany tak często..)

Ten post edytował qbuz 8.01.2006, 18:43:09
Go to the top of the page
+Quote Post
yavaho
post 8.01.2006, 18:55:43
Post #22





Grupa: Zarejestrowani
Postów: 449
Pomógł: 0
Dołączył: 26.05.2004
Skąd: Nowy Sącz

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


Cytat(ghostrider @ 2006-01-08 19:16:05)
parser php jest dwu biegowy:
najpierw przeglada caly kod, potem go wykonuje
A więc includuje i otwiera te pliki z ktorych kod nawet nie zostanie przetworzony?
Chce wiedziec (na przykładzie mojego kodu powyzej) jezeli $_GET['id']=0 to czy praser zaladuje do pamieci plik: "plik1.php" i inne pozostałe includowane pliki, z ktorych kod nie bedzie przetwarzany w momenie wywolania tej strony?


--------------------
Książki informatyczneKsiążki biznesowe
Warsztat: notepad hardcore
Go to the top of the page
+Quote Post
sobstel
post 8.01.2006, 19:39:19
Post #23





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


Cytat(yavaho @ 2006-01-08 18:55:43)
Cytat(ghostrider @ 2006-01-08 19:16:05)
parser php jest dwu biegowy:
najpierw przeglada caly kod, potem go wykonuje
A więc includuje i otwiera te pliki z ktorych kod nawet nie zostanie przetworzony?
Chce wiedziec (na przykładzie mojego kodu powyzej) jezeli $_GET['id']=0 to czy praser zaladuje do pamieci plik: "plik1.php" i inne pozostałe includowane pliki, z ktorych kod nie bedzie przetwarzany w momenie wywolania tej strony?

mozesz to prosto sprawdzic samemu wywolujac na koncu get_included_files" title="Zobacz w manualu php" target="_manual


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
yavaho
post 8.01.2006, 20:57:40
Post #24





Grupa: Zarejestrowani
Postów: 449
Pomógł: 0
Dołączył: 26.05.2004
Skąd: Nowy Sącz

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


Trudno od Was wyciagnac konkretne informacje smile.gif Wiec sam sobie sprawdzilem.
  1. <?php
  2. switch($_GET['id']){
  3.  case 0:
  4.   //kilkadziesiat lini kodu
  5.  break;
  6.  case 1:
  7.   //kilkadziesiat lini kodu
  8.  break;
  9. }
  10. ?>
W tym przypadku parser analizuje caly kod bez wzgledu na to czy kod zostanie wykoany czy nie. A wiec laduje do pamieci powiedzmy 100 razy wiecej kodu niz naprawde jest potrzebne do wygenerowania danej strony www.
  1. <?php
  2. switch($_GET['id']){
  3.  case 0:
  4.   include('plik0.php');
  5.  break;
  6.  case 1:
  7.   include('plik1.php');
  8.  break;
  9. }
  10. ?>
A w przypadku includowanych plikow nie bierze pod uwage kodu, z tych plikow, z ktorych kod nie bedzie potrzebny do przetworzenia.

Sprawdzilem to poleceniem, ktore mi posunal @sopel jak i rowiez po przez umyslne wprowadziene blednego kodu do tych czesci kodu, ktory nie bedzie przetwarzany w danej chwili i sprawdzenie czy parser wywali bledy.

A wiec na razie mam taki z tego wniosek, ze nie nalezy trzymac duza ilosc kodu w jednym pliku w przypadkach kiedy tylko mala czesc z tego kodu bedzie wykonana do wygenerowania strony.

Ten post edytował yavaho 8.01.2006, 21:02:56


--------------------
Książki informatyczneKsiążki biznesowe
Warsztat: notepad hardcore
Go to the top of the page
+Quote Post
halfik
post 8.01.2006, 21:05:47
Post #25





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 17.05.2003
Skąd: Nysa

Ostrzeżenie: (10%)
X----


wszystko w osobnych plikach i includowanie.
rozbijanie kodu na wzglednie duza ilosc plikow zwieksza czytelnosc tego kodu.
modularyzacja oparta na duzych plikach przysparza pewnych problemow - jesli projekt jest duzy i tych plikow robia sie setki - ale to i tak lepsze niz przegladania 20 stron kodu jednego pliku.

jesli masz projekt, wyszczegolniach jego jednostki i dobrze jest kazda z nich miec w osobnym pliku, niezalenznie od tego czy to pojedyncza funkcja, klasa czy cokolwiek innego.

pozniej latwo to znalezc, a jak sie modyfikuje kod i cos po modyfikacji sie sypnie od razu wiadomo gdzie sie zrobilo blad i nie trzeba przegladac ton kodu.

zalet jest wiecej, ale to zauwazysz w praktyce smile.gif


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


"Nie wiedziałem tylko, że Bóg też był na grzybach, gdy majstrował przy wszechświecie" (Janusz Wisniewski)
dev: gazeta.ie
Go to the top of the page
+Quote Post
bigu
post 12.01.2006, 21:04:00
Post #26





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 7.06.2005

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


Heja!
Posluchalem waszej rady i robie na include, jednak napotakalem pewien problem. Otoz w swojej apliakcji mam 3 rodzajow userow: niezalogowany, zwykly i admin. Poszczegolne menu wywoluje w ten sposob ze mam index.php?req=1 i to jest na przyklad logowanie. Tyczy sie ono wszystkich i kazdy moze wywlac ten skrypt (ktory jest w pliku include)

  1. <?php
  2.  
  3.  switch($req)
  4.  {
  5.  case 1:
  6. include('logowanie.php');
  7. break;
  8.  case 2:
  9. include('rejestracja.php');
  10. break;
  11. ....
  12. }
  13.  
  14. ?>


Jednak jezeli nie jestem adminem to nie powinienem moc wykonywac rejestracji. Nie ma tego w menu usera zwyklego ani niezalogowanego, jednak mozna wpisac recznie w pasek ?req=2 i wtedy skypt mozna wywolac...Wiem ze moge dac w skrpycie zabezpieczenie ze jak ktos napisze ?req=2 i nie jest adminem to go wywala.

np:

  1. <?php
  2.  
  3. if ($usertype=='a')
  4. {
  5. ....kod rejestracji
  6. }
  7. else
  8. {
  9.  echo "Nie tu twoje miejsce";
  10.  header("Location: http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."index.php");
  11. }
  12.  
  13. ?>


Rozwazam takze druga opcje. Ze stworze najpierw switcha z wyborem usera a pozniej odpowidniego z wyborem opcji, czyli:

  1. <?php
  2.  
  3.  switch($usertype)
  4.  {
  5.  case 'u':
  6. include('user.php');
  7. break;
  8.  case 'a':
  9. include('admin.php');
  10. break;
  11.  case 'un':
  12. include('nizalogowany.php');
  13. }
  14.  
  15. ?>


i dopiero wtedy w pliku np. user.php wywalac odpowiedni req

plik user.php:


  1. <?php
  2.  
  3.  switch($req)
  4.  {
  5.  case 1:
  6. include('logowanie.php');
  7. break;
  8.  case 2:
  9. include('costamcostam.php');
  10. break;
  11. ....
  12. }
  13.  
  14. ?>


Ktore rozwiazanie jest lepsze wg. Was? i czy w ogole dobrze mysle, a moze jakos inaczej to zastosowac? Moze jest jakies trzezcie wyjscie.

Podzielcie sie uwagami i dzieki!
Go to the top of the page
+Quote Post
bigZbig
post 13.01.2006, 09:18:49
Post #27





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

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


Panowie widze ze odeszliscie od pierwotnego problemu ktory nie brzmial czy wywolywac strone zawsze poprzez pojedynczy plik np. index.php czy tez dla poszczegolnych stron tworzyc osobne pliki.

Wasza dotychczasowa dyskusja przypomina powrot do dziecinstwa. Kto rozsadny trzyma cala tresc strony w jednym pliku. Wiadomo ze includowania sie nie uniknie (no chyba ze przy bardzo malej witrynie), problem polega jednak na tym czy chcac sie dostac do dwoch roznych artykulow wpisze w przegladarce za kazdym razem index.php z odpowiednimi parametrami czy tez za pierwszym razem art1.php a za drugim art2.php?

Moim zdaniem trzeba te metody troszke polaczyc. Wyswietlajac newsy nie bede dla kazdego tworzyl osobnej podstrony, ale przechodzac np. do forum zmieniam plik wywolywany. Oczywiscie w ramach forum znow odwoluje sie do tego samego adresu (nie liczac roznych parametrow).

Cytat(athabus @ 2006-01-06 19:33:35)
Ja nie jestem pro, ale też się wypowiem:-)
Do tej pory pisałem stylem "każda strona osobno", ale moim zdaniem to trochę uciążliwe jest.
Ostatnio właśnie w ramach treningu piszę sobie mały portalik i chciałem zobaczyć jak tą kwestię rozwiązują cms'y. Wybrałem mambo (wiem że to nie najlepszy wybór biggrin.gif ) i "podpatrzyłem" u nich sposób z index?skrypt. Powiem tak - niby różnica mała, ale dla mnie to jest o wiele wygodniejsze - jakoś łatwiej można utrzymać porządek w aplikacji. Ale to tylko takie subiektywne odczucie.

Kolego "kazda strona osobno" to naprawde nie problem. Chodzi tylko o to aby czesc kodu wspolna dla wszystkich podstron includowac a nie powielac w kazdym pliku.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 15.08.2025 - 02:54