Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Kraken PHP - Szkielet do tworzenia wieloprocesowych, wielowątkowych webaplikacji w PHP
Skie
post 6.10.2016, 13:16:43
Post #1





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

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


Witam wszystkich,
jest to pierwsze forum deweloperskie na jakim zarejestrowałem się kilka lat temu, nauczyłem się tu dużo rzeczy, trochę pomogłem innym i ogólnie traktuję to miejsce jako moje rodzinne forum, gdzie wszystko się zaczęło. Z tego też powodu, po 2 latach pracy, chciałem Wam w pierwszej kolejności przedstawić wyniki mojego projektu - Kraken Framework - szkielet do tworzenia wieloprocesowych, wielowątkowych aplikacji webowych z zastosowaniem architektury multiagentowej. Jest to pewnego rodzaju przed-premiera, bądźcie wyrozumiali smile.gif

Projekt jest szkieletem aplikacji, umożliwiającym tworzenie bezpiecznych, rozproszonych i asynchronicznych aplikacji webowych w PHP. Jego główną rolę jest zapewnienie podstawowych funkcjonalności z tym związanych out-of-the-box, by nie trzeba było do każdego projektu obowiązkowo zaciągać node.js, gdy nagle okazuje się, że trzeba dodać np websockety. Wsparcie asynchroniczności i strumieni, zezwają na utrzymanie wysokiej wydajności i niskiego zużycia pamięci. Całość jest open source i wydane na licencji MIT.

Więcej o projekcie:
- Strona Główna - Official Kraken Website
- Github - Kraken Framework

Prosiłbym w tym temacie, byście wypowiadali się jedynie na temat samego projektu, wszystkie niedoskonałości strony WWW możecie zgłosić w osobnym temacie.

Prosiłbym także o wsparcie, jeśli uważacie, że technologia, którą wam prezentuję jest ciekawa i godna uwagi, proszę byście szepnęli o niej jakieś drobne słówko w swoich blogach czy innych serwisach, z których korzystacie. Jeżeli nie chcecie nic takiego robić, to chociaż nagrodźcie projekt Githubowym Star'em. Zainteresowanie projektem pozwoli mi go nadal, dynamicznie rozwijać, wiedząc, że na to co robię jest odpowiednio wysokie zapotrzebowanie smile.gif

Z góry wszystkim dziękuję!

Ten post edytował Skie 6.10.2016, 13:47:52


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
nospor
post 6.10.2016, 15:01:47
Post #2





Grupa: Moderatorzy
Postów: 34 583
Pomógł: 5734
Dołączył: 27.12.2004




Tak przegladam na szybko.
Czemu w timersach uzyles sekund zamiast milisekund? Wowczas zamiast 0.5 by sie pisalo 500. Milisekundy wydaja sie bardziej intuicyjne, a moze sie myle?

ps: masz gdzies ten chat online?


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Skie
post 6.10.2016, 15:12:24
Post #3





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

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


Mogłem używać dwóch skali, albo z sekundowej z przedziału od 0 do 1, albo wielokrotności najmniejszej obsługiwanej jednostki czasu, tak jak piszesz od 1 do N. Tą najmniejszą jednostką w Krakenie to mikro a nie milisekunda, więc oczekując pół sekundy, trzeba byłoby pisać wartości rzędu 5e5, lu 500000, co zaczyna wyglądać zabójczo. Ponadto cały system bazuje na przesyłaniu wiadomości pomiędzy różnymi odizolowanymi od siebie kontenerami korzystajać z architektury opartej o wiadomości, i w takim przypadku fallbacki oczekujące kilku sekund są dopuszczalne. Innymi słowy, operowanie na sekundach jest tutaj bardziej intuicyjne. Ponadto, tę skalę wykorzystują również inne biblioteki oferujące asynchroniczność w PHP, zwłaszca React, do którego Kraken posiada odpowiednie adaptery. Lepiej używać już tego co zostało w jakimś tam stopniu przyjęte za standard niż zmieniać to na siłę, a potem przemnażać w adapterach każdą operację przez 1e6 smile.gif

Jeżeli pytasz o to , czy jest przykład związany z implementację czatu to tutaj https://github.com/kraken-php/demo-chat . Jeśli pytaz czy ta implementacja jest gdzieś uruchomiona i działająca online, to niestety w tej chwili nie. Przynajmniej nie publicznie. Aczkolwiek, rzeczywiście, można byłoby to uruchomić na zewnętrznym serwerze dla poglądu.

Ten post edytował Skie 6.10.2016, 15:15:53


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
nospor
post 6.10.2016, 15:18:33
Post #4





Grupa: Moderatorzy
Postów: 34 583
Pomógł: 5734
Dołączył: 27.12.2004




Cytat
Mogłem używać dwóch skali, albo z sekundowej z przedziału od 0 do 1, albo wielokrotności najmniejszej obsługiwanej jednostki czasu, tak jak piszesz od 1 do N. Tą najmniejszą jednostką w Krakenie to mikro a nie milisekunda, więc oczekując pół sekundy, trzeba byłoby pisać wartości rzędu 5e5, lu 500000, co zaczyna wyglądać zabójczo. Ponadto cały system bazuje na przesyłaniu wiadomości pomiędzy różnymi odizolowanymi od siebie kontenerami korzystajać z architektury opartej o wiadomości, i w takim przypadku fallbacki oczekujące kilku sekund są dopuszczalne. Innymi słowy, operowanie na sekundach jest tutaj bardziej intuicyjne. Ponadto, tę skalę wykorzystują również inne biblioteki oferujące asynchroniczność w PHP, zwłaszca React, do którego Kraken posiada odpowiednie adaptery. Lepiej używać już tego co zostało w jakimś tam stopniu przyjęte za standard niż zmieniać to na siłę, a potem przemnażać w adapterach każdą operację przez 1e6
Dziekuje za wyjasnienie smile.gif

I tak, pytalem o demo live. Kod znalazlem, az tak tepy nie jestem... choc wiem ze moj avatar moze byc mylacy wink.gif


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
cepa
post 10.10.2016, 16:38:53
Post #5





Grupa: Zarejestrowani
Postów: 125
Pomógł: 7
Dołączył: 27.01.2010

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


Odrobina konstruktywnej (mam nadzieje) krytyki.

O ile sama idea przetwarzania wieloprocesowego i asynchronicznosci jest jak najbardziej sluszna i daje spore mozliwosci, to pytanie dlaczego na sile Pehap?

Co do kodu, przejzalem na szybko demo chat i wybacz ale wedlug mnie kod cierpi na to samo co wielkie frejmlorki pehapowe jak Symfony czy nawet Zend: kompleks javy, masa kodu ktory nie robi nic, a dodaje zlozonosci. Zerknij dla porownania jak wygladala by ta sama funkcjonalnosc w np: pythonie uzywajac flaska + celery, czy akka.io + play w scali.

Na plus, podoba mi sie to dobrze wygladajaca dokumentacja, moze brakuje nieco tutoriali, ale z gory wyglada na projekt, ktory moze kogos zainteresowac.

Ten post edytował cepa 10.10.2016, 16:40:37


--------------------
Go to the top of the page
+Quote Post
Skie
post 10.10.2016, 16:57:00
Post #6





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

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


PHP dlatego, że zbyt często w nowoczesnym webdevelopingu spotykam się z sytuacją, gdzie jest produkowana apka w PHP, do której potem dochodzą wymagania typu websocket, dystrybucji obliczeń, kolejkowania różnych tasków i często w takiej sytuacji ludzie od razu zaczynają automatycznie zaprzęgać node.js tylko do tej jednej funkcjonalności lub inne technologie co powoduje, że od razu rośnie niepotrzebnie poziom skomplikowania. Jestem zdania, że PHP nie powinien być traktowany jako gorszy język ("dlaczego PHP?"), bo posiada również wiele niewykorzystanych zalet - chociażby to, że wspomniany Kraken używajać PHP7.0 działa wydajniej niż wspomniany Node.js przy podobnych taskach. Jeśli deweloprzy pójdą w tym kierunku dalej rozwijająć aplikacje, moglibyśmy stworzyć własnego Node.php kiedyś. Nie mówię, że Node.js jest zły, oczywiście bo nie jest. Sam piszę głównie w PHP, w Node i w Go, ale nie lubię jak wszystko jest mieszane tylko dlatego, że w "bo tam to jest." Czy naprawdę, każdy projekt teraz musi być mieszanią PHP, Node, Pythona z Go/C++ w tle i obowiązkowo chociaż jednym serwisem JAVowym, by być "dobry"?

Duże projekty oferują wiele funkcjonalności i konfiguracji, więc to oczywiste, że poziom skomplikowania i złożoności jest i będzie duży. Akka.io to jeden ze wzorów który chciałem naśladować tworząc to oprogramowanie, co jest widoczne m.in. w systemie jak został stworzony cały nadzór aplikacji. Niestety nie da się wszystkiego przenieść 1-do-1, niektóre rozwiązania w PHP po prostu nie będą na tyle wydajne by był sens je implementować, więc trzeba to zrobić tak by było dobrze, a nie by było tak samo ale niewydajnie. Na sam koniec powiem, że jest to też szkielet aplikacji nie dla każdego, moim targetem były mniejsze i średnie projekty. Nie zamierzam tutaj konkurować z JAVĄ czy Akką, bo nie do tego zostało to stworzone. Ponadto, jeśli jesteś w stanie zaprząc tego typu duże enterprise'owe projekty i masz odpowiednie zasoby na to, to wybór technologii jest naprawdę duży, a złośliwiec może rzecz "po co JAVA czy Python? Tylko Erlang!" smile.gif

Ten post edytował Skie 10.10.2016, 17:22:55


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
olszam
post 10.10.2016, 22:52:25
Post #7





Grupa: Zarejestrowani
Postów: 328
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

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


Jedno mnie zawsze dziwi w dokumentacji. Polak napisał a i tak dokumentacja jest napisana w jednym języku czyli angielskim. Nie to żebym się czepiał że po angielsku jest napisane ale dodatkowe tłumaczenie na polski można by było skoro się samemu pisało. Zachęciłbyś ludzi w Polsce do korzystania z frameworka jakby dodatkowo miał polską dokumentacje, głównie dla tych co nie znają angielskiego.

Zachęciłeś mnie akurat tutaj socketami, bo małą gierkę karcianą miałem robić więc teraz będę miał mętlik czy rzucić się na node.js czy brać krakena, choć macki za bardzo ciągną biggrin.gif
Go to the top of the page
+Quote Post
emstawicki
post 11.10.2016, 07:13:52
Post #8





Grupa: Zarejestrowani
Postów: 207
Pomógł: 40
Dołączył: 2.06.2016
Skąd: Olsztyn

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


blink.gif przecież język angielski to nie japońskie krzaczki czy arabskie ogrodzenia?


--------------------
Jak w Olsztynie, to tylko w Revolver Rock Cafe .
Sprawdź postęp propagacji DNS
Go to the top of the page
+Quote Post
olszam
post 11.10.2016, 16:46:52
Post #9





Grupa: Zarejestrowani
Postów: 328
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

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


Cytat(emstawicki @ 11.10.2016, 08:13:52 ) *
blink.gif przecież język angielski to nie japońskie krzaczki czy arabskie ogrodzenia?

to samo można powiedzieć o Polskim biggrin.gif
Go to the top of the page
+Quote Post
Daimos
post 14.10.2016, 20:59:06
Post #10





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

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


Cytat(olszam @ 10.10.2016, 23:52:25 ) *
Jedno mnie zawsze dziwi w dokumentacji. Polak napisał a i tak dokumentacja jest napisana w jednym języku czyli angielskim. Nie to żebym się czepiał że po angielsku jest napisane ale dodatkowe tłumaczenie na polski można by było skoro się samemu pisało. Zachęciłbyś ludzi w Polsce do korzystania z frameworka jakby dodatkowo miał polską dokumentacje, głównie dla tych co nie znają angielskiego.

Zachęciłeś mnie akurat tutaj socketami, bo małą gierkę karcianą miałem robić więc teraz będę miał mętlik czy rzucić się na node.js czy brać krakena, choć macki za bardzo ciągną biggrin.gif

Myślę, że grupa docelowa zna angielski ";)"


--------------------
scriptun.com - mały pomocnik programisty
Go to the top of the page
+Quote Post
Omenomn
post 15.03.2017, 22:07:16
Post #11





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 4.02.2014

Ostrzeżenie: (20%)
X----


Podsumowując w kilku słowach, jaką przewagę ma ten framework nad innymi wykorzystującymi kontener ioc?
Rozumiem, że nie trzeba podpinać do niego node.js aby wykorzystać wszystkie funkcjonalności i jest szybki.

Interesuje mnie przejrzystość kodu, praca na modelach, migracje, seedy, ogólnie rzecz biorąc, czy dostarcza tych wszystkich narzędzi jakich dostarczają takie frameworki jak Laravel i Symfony? Jeśli tak to w czym są one lepsze?

Jestem sceptycznie nastawiony do wymyślania nowych frameworków, ponieważ jest ich już dużo.

Po za tym uciekanie od node.js nie uważam za rozważne.
Node.js pochodzi od javascript, więc ma bardzo silny związek z aplikacjami przeglądarkowymi.
Dodatkowo obiektowe bazy danych, choćby takie jak elasticsearch wykorzystują format danych json pochodzący z js'a, co znowu wysuwa node.js i javascript na prowadzenie.
Sądzę, że obiektowe bazy danych są bardziej intuicyjne i prostsze w wykorzystaniu w stosunku do relacyjnych, dzięki czemu to one będą rozwijane i coraz bardziej popularne w przyszłości, a trio javascript, node.js, i bazy danych json będzie mieć silną pozycję na programistycznym rynku.

Nie wiem jaka jest przyszłość php, lubię ten język, jednak nie widzę konieczności zamykania się tylko na niego.
Wydaje mi się, że każdy język programowania ma szczególne cechy, które można wykorzystać do szczególnych zadań, choćby dlatego c++ jest popularniejszy na desktopie, niż w aplikacjach www.

Ten post edytował Omenomn 15.03.2017, 22:11:17
Go to the top of the page
+Quote Post
com
post 16.03.2017, 14:05:57
Post #12





Grupa: Zarejestrowani
Postów: 2 951
Pomógł: 358
Dołączył: 24.05.2012

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


Omenomn
Cytat
Interesuje mnie przejrzystość kodu, praca na modelach, migracje, seedy, ogólnie rzecz biorąc, czy dostarcza tych wszystkich narzędzi jakich dostarczają takie frameworki jak Laravel i Symfony? Jeśli tak to w czym są one lepsze?


A wgl zapoznałeś się z tym czym on jest? Bo ten framework pełni zupełnie inna role niż typowe które wymieniłeś. Tu masz zupełnie inne podejście do wytwarzania oprogramowania.


--------------------
Go to the top of the page
+Quote Post
Omenomn
post 16.03.2017, 14:45:32
Post #13





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 4.02.2014

Ostrzeżenie: (20%)
X----


Nie, rzuciłem tylko okiem.
Za nim zacznę się zagłębiać, wolę wiedzieć jakie mogę mieć z tego korzyści.
Nie będę szczegółowo zapoznawał się czymś co może okazać się dla mnie zbyteczne.
Powód edycji: [Spawnm]: 3dni wyciszenia za taki numer.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.06.2019 - 18:57