Tüm eleştirmenler "PHP multi-tasking için büyük değil":
Bir adım geri atın ve bir lamba bir ortamda iseniz emrinde müthiş bir Multithreading çerçeveye sahip olduğunu düşünün. Sizin yararınıza bu taban mimarisi kullanın - ve bu bir lanet iyi bir - yani Apache çoklu iş parçacığı yöneticisidir.
Bu ortamda çalışmak için kurulum PHP çok kolaydır.
- Komut indefinatly çalıştırmak için izin max_execution_time = 0 olarak ayarlayın
- Set ignore_user_abort = true to allow scripts to run even after the
client has aborted
Tasarım hafif tek görev REST web hizmetleri. Böyle bir kuyruk tipi sistemi olarak döndüğünüzde umurumda değil böyle bir şekilde onları tasarlayın. Kuyruğuna yazma parçacığı güvenli ve bazı temel OS düzeyinde muteksler ile yapılırsa kuyruğundan kaldırarak parçacığı güvenlidir.
Web hizmetleri "forking" bir dosya açmak kadar basittir:
fclose(fopen("http://somewebservice....php?a1=v1&a2=v2&....")); // Launch a web service and continue...
Sadece bu yaklaşım çok dişli olduğunu, ancak doğal olarak da dağıtılır. Web hizmeti, yerel veya dünya çapında yer olabilir. PHP kesinlikle umursamıyor.
Temel bir sistem için geri tutan tek şey apache sağlar parçacığı sayısıdır. Aksi takdirde kod yük dengeleme yararlanmak için hazır olduğunu ve Apache uygulamaları gelişmiş tüm diğer temiz hileler sunmak zorunda.
Çok sık geliştirici düşünüyorum zaman "multi-threaded" onlar "OMG ben çatal ve denetmen ve beklediği ve PID'leri işlemek zorunda" düşünüyorum. Eğer bu şekilde sistem tasarımı ve eğer - Haklısın, çok çok hızlı bir şekilde karmaşık alır. Geri adım ve verilen ne kullanın. Sen dizinlere erişimi var? Boom - Eğer kuyrukları var. Bu web aramaları verebilir? Boom - Bir çok dişli (dağıtılan) uygulaması var. Şimdi sadece app dikte gibi kavramları birlikte birleştirme.