PHP ile asenkron işleme - iş başına bir işçi

0 Cevap php

Amacı genel asenkron işleri başlatmak için kullanıcı istekleri kabul, ve sonra işi çalıştırmak için bir alt işlem / iş parçacığı oluşturmak için bir PHP web uygulaması düşünün. Işler, özellikle CPU veya bellek yoğun değil, ama I / O oldukça sık aramaları üzerine bloke etmesi beklenmektedir. Hiç birden fazla ya da iki iş saniyede başlamış olmalı, ama nedeniyle uzun vadede kez aynı anda çalışan pek çok işler olabilir.

Bu nedenle, iş paralel olarak sürmesi büyük önem bulunuyor. Ayrıca, her iş, vb asılı işçi öldü kullanıcı isteği üzerine işçileri durduruluyor sorumlu bir müdür daemon tarafından izlenmesi gerekir

Bu gibi bir sistemi uygulayan hakkında gitmek için en iyi yolu nedir? Ben görebiliyorum:

  1. Yöneticisinden bir işçi bölmek - Bu en düşük seviyesi seçenek gibi görünüyor, ve ben bir izleme sistemi kendim uygulamak zorunda kalacak. Apache web sunucusu, bu yüzden bu seçenek FastCGI yoluyla başlamış olması, herhangi bir PHP işçi gerektirecek görünür.
  2. Iş / mesaj kuyruğuna çeşit kullanın. (Gearman, beanstalkd, RabbitMQ, vb) - Başlangıçta, bu bariz bir seçim gibi görünüyordu. Biraz araştırmadan sonra, ben tüm seçenekleri ile biraz kafam karıştı. O ben (iş başına bir işçiyi) gerekenler için doğru olup olmadığını ben bilmiyorum ... işçilerin sabit bir havuz vardır büyük dağıtık sistemler için tasarlanmış gibi Örneğin, Gearman görünüyor.

0 Cevap