Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Node.JS problem wątków.
Forum PHP.pl > Forum > Przedszkole
mazyl
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
Comandeer
Pewnie używasz setInterval, a powinieneś setTimeout wywoływanego po zakończeniu poprzedniej operacji.
mazyl
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)
Comandeer
Może pokaż jaki masz kod obecnie. setTimeout raczej nie będzie mielił kolejnej funkcji przed zakończeniem poprzedniej.
zegarek84
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...
Forti
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!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.