Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sens multiwątkowości w PHP
Skie
post
Post #1





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Witam,
ostatnio dużo mówi się o multiwątkowości/multiprocesowości w PHP - pthreads , pcntl - i tym podobne pomysły. Ludzie debatują czy PHP jest thread-safe czy też nie.
Nie potrafię zrozumieć jednak sedna tego problemu - sensu istnienia tego mechanizmu. Jeżeli wykorzystujemy klasyczną architekturę do wtorzenia serwisu - tj serwer HTTP, który wywołuje w cmd parser PHP i potrafi to robić asynchronicznie , to czy w tym momencie architektura nie staje się multiprocesowa? Po co do tego dokładać jakieś rozgnieżdżenia procesu po stronie skryptu PHP ?
Może ktoś mi to wytłumaczyć LUB wskazać literaturę/artykuł gdzie jest omówiony sens tego zagadnienia z szerszej perspektywy niż tylko parsera PHP ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
destroyerr
post
Post #2





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Gdyby Twój pierwszy post posiadał taką treść nie byłoby "wycieczek personalnych".
Cytat
Nie projektuje się takich systemów tak, by worker jeszcze rozwidlał swoją pracę na parę procesów.

Dlaczego? Jeżeli mamy do jednej maszyny przypisanego jednego workera to dlaczego nie rozdzielić go na procesy (patrz: celery).

Cytat
1. Wykonanie kodu w czasie oczekiwania dostępu do magazynu danych (baza danych, cache, HDD) - można wyeliminować ten problem korzystając z asynchronicznych zapytań lub eventów.

Można, ale można też skorzystać z "wątków".

Cytat
2. Wykonywanie w tle kodu PHP niezwiązanego z danym requestem (zarządzenie serwisem, zdarzenia czasowe) - jeżeli nasz system sprawdza przy requeście czy coś trzeba takiego zrobić , to problem leży w jego architekturze i stanowi moim zdaniem poważną lukę. Nie do tego są requesty by wykonywać w ich czasie (procesie jednego requesta) takie rzeczy.

Tutaj się zgadzam. Potrafię jednak sobie wyobrazić, że ktoś ma taką potrzebę i realizuje ją w ten sposób. Nie uważam, że PHP powinno to ograniczać.

Cytat
3. Kod niezwiązany z requestami, np program działający w tle niezależnie od serwera HTTP - PHP nie jest językiem, w którym powinno się implementować takie rzeczy

Może jednak jakieś argumenty? Jeżeli cały model dziedziny mam napisany w PHP, do tego mam też komunikację z zewnętrznymi usługami to nie widzę sensu na przepisywanie tego do innego języka. Moim zdaniem to jest właśnie kluczowe miejsce istnienia wielowątkowości i wieloprocesowości w PHP.

Cytat
4. Podział kodu, który należy wykonać w requeście na niezależne od siebie części i wykonanie ich równolegle - jest to jedyne zastosowanie, które można uznać na pozór za sensowne. Zagłębajac się jednak głębiej w ten podpunkt łatwo dojść do wniosku, że serwer nieobciążony przez sieć zadziała wystarczająco szybko "1 process per request", a w przypadku coraz większego obciążenia na sieci takie rozwidlanie coraz bardziej traci sens, bo serwer i tak nie będzie miał zapasu mocy obliczeniowej, które mógłby zaoferować.

Nie przekonuje mnie to. Jeżeli na jednej stronie mamy do wyświetlenia dwa raporty, to wykorzystując dwa procesory odpowiedź powędruje do klienta szybciej niż wygenerowanie tych raportów jeden po drugim na jednym procesorze.
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 13.10.2025 - 10:14