Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: na jakiej zasadzie przetwarzany jest skrypt na serwerze
Forum PHP.pl > Forum > PHP
marcinp1984
Witam
Mam pytanie bardziej teoretyczne niż praktyczne. Mianowicie zastanawia mnie jak wygląda sprawa przetwarzania przez serwer skryptów php. Napisałem pewien skrypt, który pobierał z pliku pewne dane konfiguracyjne. Skrypt ten wywoływany jest z poziomu przeglądarki w sposób:
  1. <img src="load.php?img=1">
  2. <img src="load.php?img=2">

Co pobiera odpowiednio przetworzone obrazki.

Początek pliku load.php gdzie pobierane są dane konfiguracyjne
  1. $configTxt = unserialize(file_get_contents('konfiguracja/config.txt'));
  2.  
  3. $data['BG_COLOR'] = $configTxt['bg_color'];
  4. $data['COLOR'] = $configTxt['color'];
  5. $data['font'] = $configTxt['font'];
  6. (...)

Jak było to napisane w ten sposób byłem pewien że wszystko będzie działało ok. Ale pomyślałem sobie, że można by sobie wczytywać w zależności od potrzeby różne dane konfiguracyjne, które znajdują się w różnych plikach. I teraz wygląda to tak:
  1. <img src="load.php?img=1&config=1">
  2. <img src="load.php?img=2&config=1">

load.php
  1. if($_GET['config']==1){$configTxt = unserialize(file_get_contents('konfiguracja/config1.txt'));}
  2. if($_GET['config']==2){$configTxt = unserialize(file_get_contents('konfiguracja/config2.txt'));}
  3. if($_GET['config']==3){$configTxt = unserialize(file_get_contents('konfiguracja/config3.txt'));}
  4. if($_GET['config']==4){$configTxt = unserialize(file_get_contents('konfiguracja/config4.txt'));}
  5.  
  6. $data['BG_COLOR'] = $configTxt['bg_color'];
  7. $data['COLOR'] = $configTxt['color'];
  8. $data['font'] = $configTxt['font'];
  9. (...)

I teraz zaczynam mieć wątpliwości. Może głupie wątpliwości ale zupełnie nie wiem jak to od tej strony wygląda. Bo jest jest jeden plik load.php, który może być w jednym momencie wykonywany np 10 razy jeżeli w tym samym momencie przeglądarkę otworzy 10 różnych osób. W pierwszej wersji na ilu przeglądarkach by nie otworzyć strony, skrypt zawsze pobierał ten sam plik konfiguracyjny, i przetwarzał jedno i to samo. I niby działa wszystko ok. A jak to będzie wyglądało w tej drugiej sytuacji, jeśli na 10 przeglądarkach w tym samym czasie zostanie przetwarzany ten skrypt z tą różnicą że na każdej przeglądarce zostanie pobrany inny plik konfiguracyjny? I tu jest właśnie to konkretne pytanie... czy są to procesy niezależne dla serwera, który będzie wykonywał plik load.php? Czy skrypt zostanie wykonany poprawnie w każdej otwartej przeglądarce dla tych danych konfiguracyjnych jakie aktualnie występują? Czy będzie to się jakoś ze sobą gryzło jeśli osoba A otworzy przeglądarkę z kodem:
  1. <img src="load.php?img=1&config=1">
  2. <img src="load.php?img=2&config=1">

Osoba B z kodem:
  1. <img src="load.php?img=1&config=7">
  2. <img src="load.php?img=2&config=7">

Osoba C z kodem:
  1. <img src="load.php?img=1&config=4">
  2. <img src="load.php?img=2&config=4">

itd? Czy np powinienem mieć 10 plików: load1.php, load2.php, load3.php,... tylko wtedy by chyba serwer tego nie wytrzymał tongue.gif
Bardzo proszę o jakieś krótkie wyjaśnienie tej kwestii bo w sumie nie wiem czy jest sens żeby dalej ten skrypt modyfikował bo może tylko go sobie całkowicie rozwalę.
kiler129
W uproszczeniu każde otwarcie przeglądarki to wywołanie od nowa interpretera - są one absolutnie niezależne.
thek
To pomyśl tak... Każde żądanie dla serwera to osobny wątek, instancja skryptu. Ma on swoją pamięć, swoje zasoby i jest niezależny od innych wątków. No chyba że korzysta z tych samych danych i modyfikuje je. Wtedy wchodzić zaczynają do gry pewne dodatkowe obwarowania. Jeśli te warunki nie zachodzą, to w danym momencie nikt nikomu nie przeszkadza i mogą działać i tysiące takich wątków (o ile serwer to wytrzyma i ma takie wysokie limity ). To że plik ogląda (ale nie modyfikuje!) 10 albo 30 osób, dla serwera jest nieistotne.
marcinp1984
Na szczęście nic nie modyfikuje więc chyba wszystko będzie ok smile.gif
Dzięki za odpowiedzi smile.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.