Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Balans pomiędzy includowaniem plików php
Forum PHP.pl > Forum > PHP
soundtrack
Chciałbym, aby kod mojej aplikacji zawierał użyteczne klasy w oddzielnych plikach, ponadto korzystam ze wzorca projektowe MVC, który dołącza już jaką część plików.

Podsumowując:
* załączenie pliku z konfiguracją skryptu i bazy danych
* załączenie kontrolera
* załączenie dziedziczonego kontrolera
* załączenie modelu
* załączenie dziedziczonego modelu
* załączenie widoku
* załączenie dziedziczonego widoku
do tego dochodzi jakiś system szablonów, dajmy na to TWIG
* załączenie systemu szablonów (pomijając fakt, że on sam załącza potrzebne mu pliki)
* załączenie templatka (pomijając fakt, czy będzie on załączał np. nagłówek lub stopkę z oddzielnych szablonów)

Otrzymuje w ten sposób 9 załadowań plików + index.php to w sumie 10.

Jeśli postanowiłbym rozdzielić niektóre klasy aplikacji na pojedyncze pliki, w celu uzyskania czegoś w rodzaju bibliotek, to mógłbym otrzymać w rezultacie nawet >=20 załadowań.

Zastanawia mnie jedno, jak serwer PHP dołącza pliki poprzez funkcje require/include, czy działa to na podobnej zasadzie co obrazki i podstrony w html tzn. klient wysyła żądanie o każdy plik, więc im jest ich więcej - tym dłużej to trwa w wyniku nałożonych ograniczeń, czy może serwer PHP łączy poprzez system operacyjny pliki w całość, dzięki czemu rozwiązuje to problem w podobie do html'owych żądań i programista nie musi się martwić o dużą liczbę includowanych plików.

A może jest jakaś metoda, która pozwala na przyjazne rozszczepienie aplikacji na dużą ilość plików, bez jakichś strat wink.gif
Pyton_000
Nie przejmowałbym się dołączaniem plików.
PHP odwołuje się doń poprzez system plików. Nie są wykonywane żadne żądania tak jak ma to miejsce w HTTP i innych.
Crozin
Dołączanie plików to nieco złożony temat i potrafi on wpłynąć istotnie na wydajność aplikacji, ale można go skrócić do kilku podstawowych zasad:
1. Powinieneś się trzymać konwencji PSR-0 i dalszych, tj. trzymać każdą klasę w osobnym pliku, a ładowaniem plików powinien zająć się jakiś autoloader.
2. Jeżeli korzystasz z PHP w wersji poniżej 5.5 koniecznie powinieneś upewnić się, że masz włączony jakiś akcelerator (np. APC) oraz że jest on skonfigurowany w taki sposób by trzymać cache'a opcode'u wszystkich plików.
3. Jeżeli masz sporo plików do załadowania (20 to o rząd wielkości za mało) możesz zainteresować się tematem łączenia wielu plików w jeden. Ale to powinno być wykonywane przez jakieś narzędzie w momencie deploy'u aplikacji na serwerze.
Sephirus
Crozin w zasadzie wyczerpał temat - dodam jedynie dwie rzeczy.

Przykładowe, wspomniane APC mega przyśpiesza pracę aplikacji - wówczas problem ładowania plików można w zasadzie pominąć bo przy innych problemach z wydajnością (obciążenie samych serwerów, bazy danych itp) to jedynie mała kropelka w morzu.

Jeśli komuś naprawdę zależy na mega wydajności to podchodzi do tematu jeszcze inaczej i albo nie korzysta z PHP tylko z czegoś innego, albo używa jakiejś techniki/technologii prekompilacji kodu PHP. Są rowziązania pozwalające na pisanie w PHP a następnie kompilowanie (może to nie właściwe słowo) skryptów przykładowo do aplikacji C++ lub podobnego języka. Takie rozwiązania są mega szybkie i ładnie radzą sobie z masami użytkowników.

Autorze w Twoim przypadku gdy pracujesz na ~20 plikach w ogóle zapomnij o tym problemie - choć APC możesz włączyć wink.gif
soundtrack
Cytat
Autorze w Twoim przypadku gdy pracujesz na ~20 plikach w ogóle zapomnij o tym problemie - choć APC możesz włączyć


Takiej konkretnej odpowiedzi oczekiwałem smile.gif

Przy okazji zapoznałem się z czymś takim jak "konwencja nazewnictwa PSR-0". Wielkie dzięki wszystkim wink.gif
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.