![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 342 Pomógł: 15 Dołączył: 30.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
Dwa problemy;
1 Mam notyfikacje zrobione na ajax long polling. Powiedzmy, że działają. Kod widok http://pastebin.com/Nc8ynnkD kontroler http://pastebin.com/7mPZckUJ Działa to na takiej zasadzie, że jak w pliku dane.txt zmieni się czas i warunek w pętli się nie spełni to ma zwrócić odpowiedź i wyświetlić powiadomienie. problem1. Przy każdym przełączeniu podstrony, czas ładowania strony oscyluje w granicach 20-30s, problem jest żadanie ajax, bo jak zakomentuję kod czas spada do ~1s. Zauważyłem, że jeżeli w czasie ładowania strony zmienie sobie ręcznie w pliku czas to strona od razu się ładuje. Podejrzewam, że wtedy pętla nie spełnia warunku i skrypt zwraca odpowiedź i odblokowuje stronę. problem 2. Jak rozpoznać w pliku który użytkownik zmienił czas? Moim pomysłem jest stworzenie dla każdego zarejestrowanego użytkownika osobny czas a potem w skrypcie rozdzielanie tego i aktualizowanie czasu tylko zalogowanemu użytkownikowi. Np romek 12321312 franek 2131223432 janek 21321312 I jeżeli np janek wysyła prywatną wiadomość do franka to skrypt wyszukuje franka i jemu zmienia czas w pliku, a że został mu zmieniony czas to dostaje powiadomienie. powinno to być zrobione wszystko jakoś na websocetach, ale zanim to uruchomię to miną święta 2017r... |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
A w AJAXsie masz włączone asynchroniczne przesyłanie danych?
async: true -------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 342 Pomógł: 15 Dołączył: 30.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
Tak.
Na prawdę liczę na pomoc ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
może byś sobie tak ten kod zdebugował, skoro to Symfony to masz konsole nawet. Tyle lat na forum i jeszcze się nie nauczył?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 342 Pomógł: 15 Dołączył: 30.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
No, ale co debugować? wiem jaki czas wysyłam do serwera, wiem jaki zwraca, wiem gdzie tkwi błąd i nie wiem jak go rozwiązać. Poza tym nie wiem, czy serwer się nie udusi? np niech w odstępie 10 min wyśle 10 userów wyśle wiadomość prywatną. Każda wiadomość generuje kolejny request z nowym czasem, jak się serwer zachowa z taką pętlą?
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Weź opisz swój problem bardziej ludzko, bo nie bardzo wiem co Ty pragniesz osiągnąć, bo z tego kodu to za bardzo nic nie wynika
![]() |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Rety... com.... toz wszystko masz podane jak wol na tacy w czym problem
@Boshi problemem tutaj jest sesja, ktora blokuje wykonywanie innego kodu dopoki jeden sie nie wykona. Usun sesje dla testu a zobaczysz ze bedzie smigac jak ta lala ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 342 Pomógł: 15 Dołączył: 30.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
Wypróbuję potem Nospor.
Swoją drogą mam wrażenie, że to nie jest dobra droga dla notyfikacji dla wielu użytkowników. Chciałem to zrobić na long polling i działa dobrze dla jednego usera, ale dla wielu... |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
nospor Może jestem ślepy, ale gdzie Ty widzisz sesje?
![]() $_POST ?, przecież to powinieneś wyciągać z $request ![]() ta pętla się teraz nigdy nie kończy bo $lastDate zawsze zwraca zero ![]() Ten post edytował com 18.12.2016, 23:15:17 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat nospor Może jestem ślepy, ale gdzie Ty widzisz sesje? Poprostu czytam objawy... ![]() Cytat ta pętla się teraz nigdy nie kończy bo zawsze zwraca zero com ty wez moze w niedziele nie czytaj postow na forum bo masz problem z podstawowa analiza kodu ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ty mnie nie ucz podstaw response bo ja je znam.
NIe zmienia to jednak faktu, ze tablica $_POST, przynajmniej dla AJAX, nadal bedzie wypelniona, wiec jego kod dziala jak najbardziej ok ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
wiem że znasz, ok, to mój błąd
![]() |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Zeby nie bylo: ja sie z toba zgadzam, on to powinien pobierac z obiektu $request. No ale nie zmienia to faktu ze jego $_POST tez dziala
![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 342 Pomógł: 15 Dołączył: 30.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
Panowie, kłócicie się o pierdoły dotyczące kodu zamiast problemu
![]() Com. Zwraca 0 przy pierwszym requeście (a i tak powinien wysyłać od razu czas generowania strony, ale to szczegół), potem wysyła zwrócony czas z powrotem i porównuje dopóki warunek się nie spełni. To działa, zmieniam sobie recznie czas w pliku (symulacja rzeczywistej zmiany, np wysłanie wiadomości itd) i dostaje powiadomienie. Tyle, że blokuje totalnie działanie strony dopóki znów nie dostanę powiadomienia. Nospor. Sesja tu nic do rzeczy nie ma. Testowane na zalogowanym i bez logowania użytkowniku. Po prostu. wchodzisz na stronę. Na starcie wysyłane jest żadanie ajax do serwera, jako, że pętla spełnia warunek i się wykonuje, dead, strona zawiecha. Zmieniam czas pliku, jeb strona się od razu odblokowuje. Tylko tak jak pisałem, dla wielu użytkowników ten pomysł ogólnie może być słaby i nie wiem czy w to brnąć, ale z drugiej strony stawianie redisa, czy node i websocetów to mega dużo roboty. |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
https://github.com/panique/php-long-polling zainspiruj sie
![]() Ten post edytował com 19.12.2016, 00:37:35 |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 342 Pomógł: 15 Dołączył: 30.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
no ale wtedy ten warunek nigdy się nie spełni i zwraca co chwilę odpowiedź, bo pierwszy raz masz false czaspliku<0 więc zwraca czas pliku do klienta, a w drugim requeście wysyłasz mu czas pliku, a że czaspliku jest równy czasowipliku to przez zmianę warunku pętla się nie spełni znowu i od razu odpowiedź itd ;p
A co do linku to podobna implementacja jest u mnie ![]() com. Jakieś inne rozwiązanie dla wielu użytkowników, bo nawet jak rozwiąże ten problem to pozostaje kwestia jak rozpoznawać osobno komunikaty dla każdego zalogowanego użytkownika.. Ten post edytował Boshi 19.12.2016, 00:46:22 |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
tak wiem, dlatego edytowałem
![]() ![]() no najlepiej zrobić push z serwera np wykorzystać: https://www.pubnub.com/tutorial/php-push-api/ lub https://pusher.com/tutorials/realtime-notifications lub(nie działą w ie/edge ale jest https://github.com/Yaffle/EventSource) http://www.howopensource.com/2014/12/intro...er-sent-events/ https://github.com/shahzadthathal/server-se...nts-php-example https://github.com/licson0729/libSSE-php Ten post edytował com 19.12.2016, 01:03:46 |
|
|
![]()
Post
#19
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Nospor. Sesja tu nic do rzeczy nie ma. Testowane na zalogowanym i bez logowania użytkowniku. Po prostu. Powiedzialem sesja a nie zalogowany user. Nawet jak nie masz zalogowanego usera to ci symfony startuje sesje. Staraj sie czytac ze zrozumieniem ![]() Cytat owszem podobna ale twoja blokuje przeglądarkę, a tamta nie Tamta nie blokuje poniewaz tamta nie uzywa sesji ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 342 Pomógł: 15 Dołączył: 30.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
Postaram się coś ogarnąć z tego, jak znajdę chwilę czasu, potestuję i dam znać.
Dobra, punkt dla nospora ![]()
faktycznie działa, nie blokuje strony, ale tak czy siak, muszę mieć załączaną sesję, bo inaczej nie wykonam logowania i ogólnie nic chodzić nie będzie. Rozwiązanie które podał @com również blokuje żądanie o dziwo. kto by pomyślał, że stworzenie notyfikacji na stronę internetową jest takie skomplikowane... @com, nie interesują mnie rozwiązania komercyjne/abonamentowe bo to jest pod inżynierkę. Rozwiązanie może być dowolne, aby działało. Chciałem pominac tylko zwykłego ajaxa odpytującego co sekunde bazę bo to zakrawa o absurd. A te SSE jakoś tak słabo z dokumentacją. Ten post edytował Boshi 26.12.2016, 23:03:17 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 05:49 |