[#1] PHP: czy include zawsze includuje?
Witam, ostatnimi czasy zastanowiła mnie jedna sprawa związana z poleceniem include w PHP. Mianowicie powiedzcie mi proszę, czy w tym przypadku serwer dołączy plik z include? Jest to o tyle ważne dla mnie, by mieć świadomość tego w jakim stopniu serwer może być obciążony:

$e=0;

if ($e==1){
include "includes/superfunkcja.php";
}

Według mojego uznania nie powinno być to includowane - i tak byłoby korzystniej - po prostu warunek nie jest spełniony więc wszystko to co w środku jest ignorowane. Oczywiście powyższy kod nie jest zawarty w żadnej pętli, w której mogłoby dojść do zmiany wartości zmiennej $e.

[#2] Re: PHP: czy include zawsze includuje?

@BagoZonde, post #1

gdy nie jest spełniony warunek, to oczywiście nie zostanie wykonana instrukcja include... najłatwiej to sobie sprawdź, np printując w tym pliku include jakąś zmienną.

Ponadto martwi Cię obciążanie serwera tak trywialną funkcją?
[#3] Re: PHP: czy include zawsze includuje?

@BagoZonde, post #1

include() to funkcja, funkcja będzie wykonana gdy zostanie spełniony twój warunek. Nie wiem jak słaby trzeba byłoby mieć serwer żeby w tym przypadku szukać optymalizacji - moim zdaniem nie ma żadnej obawy, no chyba że cały blok jest w długiej pętli i ta funkcja jest ładowana za każdym razem. Jednak nawet gdyby była w pętli, a ty byś tam mimo wszystko chciał (zamiast umieścić przed pętlą) wykonać funkcję include() to rozsądniej byłoby użyć include_once().

[#4] Re: PHP: czy include zawsze includuje?

@ntx, post #2

Dzięki za odpowiedź! Sprawa z include bardzo mnie zastanawiała z czysto-programistycznego punktu widzenia jak i z faktu, że w grze Ondorr Drakmo, którą piszę na przeglądarki - dla przejrzystości kodu większość rzeczy jest zawarta w include. Zresztą chciałem też te funkcje po to umieścić na zewnątrz by nie dopuścić właśnie do wczytywania całości kodu znajdującego się w jednym pliku php. A ma to zasadnicze znaczenie w tym przypadku, gdyż plik ten przeładowuje się co 4 sekundy (jest to gra czasu rzeczywistego). Więc myślę, że nawet jeżeli plik mający aktualnie np: 25kb zawiera 100 warunków prowadzących do include, to wczytane właśnie jest te 25kb a nie np: 120kb gdyby warunki te były integralną częścią tego kodu przeładowywanego. Na dodatek przeładowanie to trzeba pomnożyć przez ilość graczy, którzy aktualnie znajdują się w grze. Nie bawię się tu w jakieś Ajaxy i inne rzeczy - raz, że nie znam tej technologii a dwa, że to gra, która także działa pod klasycznymi przeglądarkami amigowymi.

Myślę więc, że ma to znaczenie dla kombajnu jakim staje się Ondorr Drakmo, na dodatek jak do tej pory - znajduje się na darmowym, nieco wolnym serwerze - i czasem zdarza mi się przekroczyć maksymalną ilość uruchomienia skryptu - dostaję taki ładny komunikat - rzadko, ale zdarza się w testach. Wyliczając w przybliżeniu sam wczytywany PHP (poza grafikami) - co 4 sekundy wczytywane jest 24,5kb - wykonanie ruchu to dodatkowe aż 118kb a to wszystko plus właśnie include, które razem zajmują 132kb. I tak większość rzeczy (funkcji JavaScript) zawarta jest w stałych ramkach by nie wczytywać ich co chwilę. Ogólnie cały silnik zawiera 208,5kb więc musiałem właśnie uciec z tą liczbą rozdrabniając wszystko na include, funkcje zewnętrzne, etc. przy wykonywaniu poleceń, interakcji itd.

Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem