Uzun süre çalışan eşzamansız işleri yönetirken en iyi uygulamalar


12

Son kullanıcının uzun süredir çalışan bir eşzamansız işlenmiş iş oluşturacak bir web sayfasından istek göndereceği bir projenin tasarım aşamasındayım. Bu sorun için "en iyi uygulama" var mı? Web hizmetleri ve hizmet brokerleri iyi bir yol mudur? Microsoft mesajlaşma kuyruğu burada uygulanabilir mi?


Bunu web üzerinden yapıyorsanız ve çok uzun zaman alıyorsa, tamamlandığında kullanıcıya kısa mesaj veya e-posta gönderebilirsiniz.
İş

Yanıtlar:


6

"En iyi uygulama" hakkında bir fikrim yok. En yaygın hataları biliyorum.

İlk Hata: DOS Kendiniz

Uzun süren işi işlemek için web işleyicisini kullanırsınız. Bu, uzun süren işler haline gelen isabetlerin yüzdesine, ne kadar sürdüğüne ve ne kadar sürekli trafik elde ettiğinize bağlı olarak kötü veya çok kötü olabilir.

Bu uzun süren işin tamamlanması için geçen süre içinde 1'den fazla uzun süredir devam eden iş almadığınızdan emin olmak istiyorsunuz. Kendiniz DOS yaparsanız. Ayrıca, yüzde ve zamanın tutarlı kaldığını varsayarak daha fazla trafik elde edersiniz. Trafik büyümesinde kendi kendini sınırlayan sorunlardan biri.

İkinci Hata: Web işleyicisinden yumurtlama

Uzun süre çalışan bir işlemi gerçekleştirmek için web işleyicisinden bir işlem oluşturmak zor olabilir ve sonuç olarak hataya açık olabilir.

  • Ebeveynten doğru şekilde ayrılmanız gerekir, aksi takdirde web yöneticisi çocuğun tamamlanmasını bekler.
  • Bir çocuğu unix'te çatalladığınızda, açık tutamaçları üst öğeden miras alır. Bunların üzerine yazılmadığı takdirde otomatik olarak kapatılacaktır. Buna veritabanı bağlantıları, dosya tanıtıcıları, diğer açık ağ bağlantıları da dahildir. Alt süreç tamamlandığında hepsi kapanır .

Seçenekler

Genellikle at(1)webhandler'dan çatalsız temiz bir şekilde ayrılırım.

İle bir yoklama uygulaması da kullanabilirsiniz cron.

İşlemeyi işleyen başka bir sunucu işlemiyle iletişim kurabilirsiniz. Bu haberleşme ile yapılabilir sockets, pipesREST http araması veya bir kuyruk mesaj yönlendirme gibi veya daha yüksek seviyeli soyutlama.


2

Sanırım birkaç dakikadan fazla konuşuyorsunuz.

Birkaç dakika sürüyorsa, arka planda bir iş parçacığı başlatabilir ve kullanıcı arayüzünde biraz ilerleme gösterebilirsiniz. Birçok web uygulaması bu yöntemi kullanır.

5 dakikadan uzun sürerse, görevi özel bir hizmete devretmek isteyebilirsiniz. Bunun bir örneği, Google Analytics tarafından oluşturulan raporlardır.

Microsoft Messaging kuyruğu, bir sistemden diğerine veya bir bileşenden diğerine bilgi aktarmak için kullanılabilir.


PHP gibi diller bunu nasıl başarıyor? Bunu yapan ancak PHP ile yazılmış birkaç web uygulaması biliyorum
TheLQ

Ben PHP uzmanı değilim, ama aynı sayfa tarafından başlatılan bir iplik yerine, başka bir denir sanırım. AJAX ile gerçekte olan budur.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.