Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> ReactPHP - ktos cos?
nospor
post
Post #1





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Hejka, uzywa(l) ktos z was reactPhp i moze cos powiedziec na jego temat, jak sie zachowuje, czy warto itp? Z gory dzieki (IMG:style_emoticons/default/smile.gif)

edit: pozwole sobie odswiezyc temat, bo spora czesc userow byla na phpcon, teraz wrocili, to moze nie zauwazyli tematu (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Hahaha jaka sprora (IMG:style_emoticons/default/tongue.gif) 2?3? (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




A juz myslalem ze masz cos madrego do powiedzenia w temacie (IMG:style_emoticons/default/tongue.gif)

Cytat
2?3?
No, czyli jakies 40% aktywnych userow na forum, calkiem sporo (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
com
post
Post #4





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


podpinam się pod pytanie, też bym się chętnie dowiedział jak się sprawdza w praktyce (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Ja dzisiaj ide na wykladzik o tym, wiec moze powiedza cos madrego (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Skie
post
Post #6





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

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


Ja używałem dużo react PHP.
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




No dawaj, opisuj a nie sie tylko chwialisz (IMG:style_emoticons/default/smile.gif)
Fajne to to, idzie do czegos uzyc?

ps: jak zobaczylem Twojego krakena to pomyslalem wlasnie o tobie w kontekscie react php (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Skie
post
Post #8





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

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


Tak, ale żeby opisać czy też odpowiedzieć potrzebuję konkretnego pytania (IMG:style_emoticons/default/smile.gif) ReactPHP to jest zbiór różnych asynchronicznych komponentów a nie jednolita technologia, i jedne działają lepiej, inne gorzej. Osobiście polecam zamianę komponentów Reacta na komponenty Krakena, gdyż dużo problemów jakie miał React udało mi się naprawić, a sam interfejs jest taki sam (+dodatkowe metody) lub bardzo zbliżony. Wiem, że to zalatuje na kilometr autoreklamą, no ale co poradzić, jeśli działają lepiej?

Reacta używałem w kilku projektach przy projektowaniu gier przeglądarkowych w PHP. React sam w sobie jest po prostu implementacją asynchronicznych obliczeń w PHP na pojedynczym wątku z wykorzystaniem programowania opartego o zdarzenia (event-driven development). Główna częścią tej technologii jest Evenement i Event-Loop. To pierwsze to jest implementacja klasycznego tandemu zdarzeniowego EventEmitter-EventListener w PHP, co pozwala na tworzenie loosely-coupled architecture, a drugie to kolejka zdarzeń. Cały React działa właśnie na bazie tego drugieg komponentu - pętli. Pętla w nieskończoność sprawdza czy istnieją do wykonania jakieś funkcje, timery oraz sprawdza czy są dane do zapisanai do strumieniu, a także czy do tych strumieni przyszły dane, które warto odczytać, a następnie je wykonuje.

Oprócz tych dwóch podstawowych modułów, wartym uwagi na pewno są jeszcze Promise, które jak nazwa wskazuje jest implementacją specyfikacji Promise/A+ w PHP, Promise-Timer który dodaje timeouty do nich oraz Stream implemetujący asynchroniczne strumienie.

Nie opłaca się korzystać z komponentów takich jak Socket, Http, Http-Client czy Datagram. Zamiast nich polecam wykorzystać bibliotekę Ratchet, która to wszystko ma lepiej zrobione i wciaż jest kompatybilne z Reactem. Ratchet to osobna biblioteka rozwijana przez tego samego autora co React.

Dużo komponentów obecnie też wymarło - chociażby Zmq - gdzie od ponad roku czekam na akceptację lub odrzucenie mojego pull requesta z fixami, co skończyło się z tym, że zaimplementowałem Zmq sam.

To teraz bardziej ogólnie. React jest stosunkowo prosty w użytkowaniu ze względu na to iż każdy webdeveloper miał styczność z programowanim opartym o zdarzenia w JS. Do tego jest bardzo wydajny, w PHP7 bijący nawet Node.js. Największe problemy Reacta to polegania na bibliotece Evenement, w której wycieka pamięć przy jednorazowych zdarzeniach i która już od dłuższego czasu nie jest rozwijana, a także fakt, że React nie posiada dobrego mechanizmu do rozpraszania obliczeń na wątki i procesy. Tak, istnieje child-process, ale to tylko potrafi spawnować nie-odizolowane procesy i korzystać z ich STDOUT i STDIN. I tutaj pojawia się pewna ironia - by w pełni wykorzystać Reacta, potrzeba używać wielu procesów, które React jako tako nie wspiera i całą ich logikę - wymiany informacji, łapania błędów, deployment i bootstrap programista musi sam zaimplementować. To dla mnie było największym problemem z pracą z Reactem. Sam React jest wydajny i w miarę stabilny, ale tak jak pisałem, wymaga dużo dodatkowego boilerplate'u.

Jak macie jakieś konkretne pytania , odpowiem na wszystkie.

EDIT:

Jeśli interesują was tego typu rozwiąznaia to oprócz React PHP i Kraken PHP istnieje jeszcze trzeci zestaw bibliotek asynchronicznych dla PHP - Icicle.io. Icicle jednak ma całkowicie inne podejście do asynchroniczności, oparte o trick z generatorami. Ich metoda sprawdza się lepiej w programowaniu współbieżnym*, ale jest trudniejsze do opanowania i ma poważne problemy z kompatybilnością z bibliotekami PHP, które nie bazują na generatorach.

* Mówiąc współbieżnie, mam na myśli parallel programming. Icicle świetnie sprawdza się do tego typu programowania, ale nie jest lepszy od Reacta w kontekście distributed i concurrent programmingu.

EDIT2 :

Dużo ciekawych informacji odnośnie Reacta zawarł na swoim blogu Wyrihaximus, który jest teraz jednym z najbardzije udzielających się contributorów Reacta.

Ten post edytował Skie 6.10.2016, 17:37:43
Go to the top of the page
+Quote Post
viking
post
Post #9





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


A powiedź mi. Benchmark który przedstawiasz na stronie co testował? I jak wygląda wydajność kiedy już trzeba połączyć się z BD?
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Osobiście polecam zamianę komponentów Reacta na komponenty Krakena, gdyż dużo problemów jakie miał React udało mi się naprawić, a sam interfejs jest taki sam (+dodatkowe metody) lub bardzo zbliżony. Wiem, że to zalatuje na kilometr autoreklamą, no ale co poradzić, jeśli działają lepiej?
No wlasnie jak dzisiaj przegladalem twoj kod Krakena to sie wlasnie zastanawialem ze to chyba konkurencja dla React.

Dziekuje ci bardzo za Twoja wypowiedz (IMG:style_emoticons/default/smile.gif) Jak tylko ogarne troche czasu musze sie pobawic i w reacta i w krakena, bo temat mnie zainteresowal. Jak juz pisalem dzis ide na konferencje o react wiec moze bede mial jakis poczatek wiedzy by do tego usiasc na troche bardziej powaznie i pewnie potruje ci troche glowe (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Skie
post
Post #11





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

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


@viking Ten wykres na stronie głównej Krakena przedstawia wydajność przy dostarczaniu strony HTML Hello World, czytanej z dysku z pliku hello.html. Jest to jedyne porównanie, które jestem w stanie wykonać w kwestii Kraken vs standardowe biblioteki PHP, ponieważ tylko ta funkcjonalność się pokrywa. W każdym przypadku testy przeprowadzane były z użyciem jednego procesu, za każdym razem plik czytany był z dysku bez cache, OPCache również było wyłączone. Więcej tego typu testów kontekście Reacta (który powinien mieć podobną lub trochę mniejszą wydajność) vs MVC można zobaczyć w projekcie PHP-PM.

Co do bazy danych to każdy zdemonizowany proces, nieważne czy to Kraken czy React czy Icicle zapewni Ci dużo lepszą wydajność, ponieważ możesz połączyć się z bazą raz zamiast każdorazowo przy każdym requeście. Ponadto możesz czytanie i zapisywanie do bazy zrobić również asynchronicznie, w kwestii niektórych danych, co jescze przyśpieszy całość. Problemem są tutaj ORMy - np Doctrine wycieka pamięć. W przypadku zdemonizowanych procesów w PHP polecam raczej wykorzystanie czystego PDO lub jakiegoś micro-ORM. Jeżeli bardzo potrzebujesz ORMów, to wtedy lepiej wydelegować połaćzenie z bazą do osobnego procesu, nasłuchiwać jego zużycie pamięci i restartować jak dojdzie do limitu, ale wtedy przyrosty wydajność w porównaniu do standardowego rozwiąania nie będzie aż tak widoczny.

@nospor Na pewno chcę konkurować z Reactem na poziomie komponentów, aczkolwiek w przeciwieństwie do Reacta, Kraken dodatkowo dostarcza cały Framework, w którym można zapisać aplikacę od stóp do głów, i nie trzeba się martwić, o to jak zaimplementować nadzorowanie procesów, komunikację między nimi itp. (IMG:style_emoticons/default/smile.gif) Z chęcią odpowiem na wszystkie pytania, bo to pomoże mi w priorytezacji tasków na przyszłość.

Ten post edytował Skie 6.10.2016, 18:00:12
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Kraken dostarcza FW. A czy mozna uzywac tez Krakena tak jak react i podpiac pod to inny fw?
Go to the top of the page
+Quote Post
com
post
Post #13





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


Skie Również dziękuje za odpowiedź, w wolnym czasie na pewno zerknę i po testuje (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Skie
post
Post #14





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

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


@nospor Oczywiście, że można. Kraken jest trochę jak symfony pod tym względem - framework i repozytorium komponentów jednocześnie. Ponadto posiada on adaptery do Reacta, więc powinien byc kompatybilny z każdą asynchroniczną biblioteką, która działa na React.

cyt. "Kraken Framework is fully modular and each of its components can be used separately. If for some reason you don't want to download full application stack, you can require any of the [...] components"

Lista modułów dostępna jest w pliku README projektu na githubie, lub po prostu wchodząc na https://github.com/kraken-php .

Ten post edytował Skie 6.10.2016, 20:03:17
Go to the top of the page
+Quote Post
nospor
post
Post #15





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Ok, juz po konferencji, troche sie zawiodlem, nie dowiedzialem sie nic wiecej niz sie dowiedzialem w necie przez ostatnie pare dni...

Nie mniej jednak pobawilem sie dzisiaj troche z reactem i zrobiltem troche testow. Przykladowo moja strona na react jest w stanie obsluzyc 80% wiecej requests niz bez react.
Takie symfony na react jest w stanie obsluzyc 3-4 razy wiecej requests niz bez react.

Czemu moja strona obsluguje tylko 80% wiecej a symfony az 400% wiecej? Symfony ma kobylasty bootrstap i tutaj react daje niezlego kopa. Moja strona nie ma takiej kobyly wiec i nie ma tu az tak duzego zysku.
No ale moja strona bez reacta jest w stanie osbluzyc 5 razy wiecej requests niz strona na symfony (IMG:style_emoticons/default/biggrin.gif)

Tak czy siak react daje kopa.
Pozostaje jeszcze porownac to do krakena
Go to the top of the page
+Quote Post
Skie
post
Post #16





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

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


Jak sprawdzisz rożnicę, to napisz tutaj na forum ile Ci się udało wycisnąć, bo sam będę ciekawy takich testów (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
vokiel
post
Post #17





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Trochę w temacie. Ktoś korzystał, testował, porównywał http://sabre.io/event/loop/ ?
Go to the top of the page
+Quote Post
Skie
post
Post #18





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

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


Sabre ma bardzo prymitywną pętlę zdarzeń. Praktycznie każde inne rozwiązanie na rynku sprawdzi się lepiej niż ich.
Go to the top of the page
+Quote Post

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: 3.10.2025 - 17:52