Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript] Node.JS problem wątków.
mazyl
post
Post #1





Grupa: Zarejestrowani
Postów: 139
Pomógł: 2
Dołączył: 2.12.2011

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


Witajcie!

Mam pytanie odnośnie Node.js
mianowicie mam funkcję która jest odświeżana co 20 sekund, w niej jest pętla która wywołuje kolejną funkcję, której zadanie jest przeanalizować JSON-a otrzymanego z serwerka zewnętrznego i wrzucić do DB. Zdarza się jednak czasami taka sytuacja, że serwer troszke przymuli i JSON nie zdąży w tych 25 sekundach być wrzucony do DB a skrypt nie kończy go tylko od nowa zaczyna wykonywać skrypt.

czy ktoś wie jak temu zapobieć, jak najlepiej może rozbijać to na kolejne wątki tak by każdy JSON został do końca przeparsowany i nie ustawiać ich kolejki która może się nie wiadomo ile wydłużyć.
Z góry dziękuje za pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Comandeer
post
Post #2





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


Pewnie używasz setInterval, a powinieneś setTimeout wywoływanego po zakończeniu poprzedniej operacji.


--------------------
Go to the top of the page
+Quote Post
mazyl
post
Post #3





Grupa: Zarejestrowani
Postów: 139
Pomógł: 2
Dołączył: 2.12.2011

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


a jak pogodzić sprawę gdy wykonują się też inne funkcje i chciałbym aby każda żyła własnym życiem by setTimeout nie spowodował tego że zacznie mielić jedną funkcję nie kończąc 2. niestety wszystkie 3 są jednakowo ważne bo tak by można pokombinować z priorytetami (gdy jedna sie robi to reszte wstrzymaj itp)
Go to the top of the page
+Quote Post
Comandeer
post
Post #4





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


Może pokaż jaki masz kod obecnie. setTimeout raczej nie będzie mielił kolejnej funkcji przed zakończeniem poprzedniej.


--------------------
Go to the top of the page
+Quote Post
zegarek84
post
Post #5





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


jeśli tych danych masz naprawdę duuużo to wąskim gardłem jest baza danych... spróbuj dane dodać w jednej sesji/transakcji... jeśli dane mają być unikalne i ma to być sprawdzane by nie sprawdzać co każdy insert dodaj dane w jednej transakcji do tabeli tymczasowej po czym wykonaj operację ilorazu na tabelach jednym zapytaniem...


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
Forti
post
Post #6





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Z tego co rozumiem, to chcesz aby te "Zadania" były uruchamiane nie zaleznie, ale z jednej aplikacji.

Poczytaj o https://nodejs.org/api/cluster.html

Bawiłem się tym przy kilku aplikacjach. Sporo nauki i do ogarnięcia, poziomu trudności momentami hard, zwłaszcza jak jeszcze sockety dodawałem do tego... ale warto wink.gif

powodzenia!


--------------------
Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.

Fachowo.co

Behance.net/fachowo
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 Aktualny czas: 22.08.2025 - 01:49