PHP desteği asenkron programlama mı?

6 Cevap php

Ben PHP için yeni. Ben uyumsuz programlama desteği ASP.NET aşinayım. Bir istek, bazı I / O işi yapmak gerekiyorsa olmasıdır. Bu BeginProcess / EndProcess şekilde web sayfası programlamak için önerilmektedir. Asenkron programlama ölçeklenebilirlik geliştirmek için anahtardır.

Ben PHP dünyada uyumsuz programlama (BeginXXXX / EndXXXX) bir muadili olup olmadığını merak ediyorum.

6 Cevap

Içinde. NET BeginXXX / EndXXX paradigma PHP ben bile yeni bir konu başlatmak olabilir emin değilim iken, diş dayanır (belki PECL package).

FastCGI en yorumlanmış dillerde mulithread için alternatiftir. Bunun yerine yeni konuları yumurtlama bu süreçleri kullanır, ama yeni bir süreç yumurtlama pahalı olduğu gibi, sadece. NET'te ThreadPool'da olarak yeniden işlem havuzunu tutar.

I / O soketleri veya dosyaları ile yapılır Eğer stream_socket_select () veya (C / C + + sistem çağrıları benzer) sırasıyla stream_select () kullanmalısınız.

Here's a simple command line chat tutorial done with PHP: Simple PHP socket-based terminal chat

Not: Bu genel bir multi-threading çözüm değil, ama ihtiyacınız durumlar için basit bir çözüm "yarı-paralel" I / O

PHP değil, ama sayfa yüklendikten sonra zaman uyumsuz istekleri sağlayacak, AJAX kullanabilirsiniz.

Dürüst olsa, hiçbir nokta yoktur. Eğer gerçekten bir geri sonunda o ağır sikletimle istiyorsanız, ağır kaldırma yapar ayrı bir program yazarken daha iyiyiz. PHP modülleri kadarıyla farkında değilim gibi saf C yazılır, bu nedenle bunu kullanabilirsiniz ve daha sonra PHP kendi özel işlevini çağırmak gerekir.

The core has a set of process control functions, including the ability to fork a process. I don't know that I'd use these in a web script, but have used them in command line scripts before.

http://www.php.net/manual/en/book.pcntl.php

http://www.php.net/manual/en/pcntl.example.php

İşte PHP4 ve PHP5 örnekleri ile PHP çoğullama konuyla ilgili ilginç bir bağlantı:

http://netevil.org/blog/2005/may/guru-multiplexing

Stream_cast kullanarak bir HTTP isteği ile çocuk süreç yaratabilirsiniz. Bunun için bazı fikirler için http://drupal.org/project/httprl kodunu Ödeme. Ben daha cilalı bir kez github için bu kitaplığı iterek planı; Drupal dışında koştu olabilir bir şey. Ama şimdi için Drupal topraklarda yaşıyor.