Her bir bağlı kullanıcı için 10-30 saniye sürebilen setTimeout ve setInterval ile birkaç sunucu tarafı zaman aşımı ayarlıyorum. Node.js örneği bu zaman aşımlarından birinin ortasında yeniden başlatılırsa, yeniden başlatıldığında açık bir şekilde temizlenirler, bu da bu kullanıcılar için bazı sorunlara neden olabilir. Bu zaman aşımlarına devam etmek için nasıl giderim, yoksa bu konuda zaten yardımcı olan herhangi bir modül var mı?Node.js genelinde kalıcı setTimeout ve setInterval yeniden başlatılıyor
cevap
Başlatma sürelerini ve sürelerini Redis'te depolarım ve uygulamanız yeniden yüklendiğinde eksik zamanlayıcıları yeniden başlatırım. Bazı Redis modülleri: zaman aşımı, yakalama 'currentServerTime + delay
' ayarlarken
https://github.com/joyent/node/wiki/modules#wiki-db-nosql-redis
Bu uygulamanın kilitleneceğini nasıl belirlersiniz? Ya da her saniye tekrar başladığınızda start_time/süresi güncellenir mi? –
setTimeOut
yüzden, parametre olarak gecikme alır 'serverTriggerTime
' demek ve DB bu inat. Ardından, sunucunun yeniden başlatılmasıyla, serverTriggerTime
'u kullanarak aynı zamanlayıcıyı oluşturun. Sonra, delay = serverTriggerTime - currentServerTime
, yeni zamanlayıcıyı ayarlamak için bu gecikmeyi kullanın.
sunucu yeniden başlatmada, saat ve alarm
const date = Date.now();
const serverTriggerTime = +date + +delay; //time in milliseconds
ayarı: tetik zaman anlam newDelay> = 0, ulaşmamış yalnızca Ayrıca
serverTriggerTime = //retrieve from DB.
newDelay = serverTriggerTime - Date.now();
, belirlenen yeni zamanlayıcı ve newDelay süre sonra gerçekleşecek .
- 1. node.js, setTimeout geri arama yöntemi ve "this"
- 2. JavaScript'te setTimeout() ve setInterval() işlevini kullanırken işlev çağırma
- 3. Node.js setTimeout öğesinin redis değeri
- 4. setInterval ve clearInterval
- 5. Postgresql yeniden başlatılıyor
- 6. SetInterval veya setTimeout kesirli bir gecikme geçmek güvenli midir?
- 7. Sivrisinek aracısı yeniden başlatılıyor
- 8. Weblogic'i yeniden başlatılıyor Jenkins
- 9. capistrano ardışık yeniden başlatılıyor
- 10. İndirme yeniden başlatılıyor liste görünümünde
- 11. Akka çocuk monitörü yeniden başlatılıyor
- 12. Her sayfada numaralandırma yeniden başlatılıyor
- 13. setTimeout ve window.location (location.href) çalışmıyor
- 14. Bir setInterval içindeki bir animasyon nasıl duraklatılır ve yeniden başlatılır?
- 15. IE8 setInterval ve setTimeout, çalışma süresinin 49 gününden hemen sonra tetiklenir
- 16. setTimeout ve etkinlik yayımı
- 17. android webview veya tarayıcı cihazda oturum çerezlerini silmiyor yeniden başlatılıyor
- 18. Node.js + libmysql-client + pingSync + setInterval = baş ağrısı (true);
- 19. node.js içinde yeniden yönlendirme
- 20. TCP modu bağlantı noktasında yeniden başlatılıyor 5555,
- 21. VS2005 Kurulum ve Dağıtım - MSI Installer yeniden başlatılıyor
- 22. Visual Studio 2012 her çalıştığımda çöküyor ve yeniden başlatılıyor
- 23. SqlDependency/Query bildirimi - SQL Server yeniden başlatılıyor
- 24. PowerShell oturumunun yenilenmesi/yeniden başlatılıyor Çıkıştan çıkılıyor
- 25. Başvuru olmadan URL Protokolü işleme yeniden başlatılıyor
- 26. node.js neden setTimeout (func, 1.0) ayarını yanlış yapıyor?
- 27. Bluetooth yeniden başlatıldıktan sonra BLE Taraması yeniden başlatılıyor (ANDROID)
- 28. Android Emulator, sahte konum gönderirken yeniden başlatılıyor
- 29. Örnekleme ve başlatılıyor java.nio.files.Path?
- 30. Süreç öldükten sonra Android uygulamasını yeniden başlatılıyor
Bunun için node cron kullanamazsınız? – albertjan
Ne kadar? Bunlar kurduğum cron işleri değil, uygulama ile kullanıcı etkileşimlerine dayanan 10-30 saniyelik zaman aşımları. –
Bunun için beanstalkd kullanabilirsiniz. Hatta ısrar edebilir. – Alfred