The following statement left me searching for answers for about a day before I finally clued in:
"Process Control should not be enabled within a web server environment and unexpected results may happen if any Process Control functions are used within a web server environment."
At least for PHP 5.3.8 which I am using, and who knows how far back, it's not a matter of "should not", it's "can not". Even though I have compiled in PCNTL with --enable-pcntl, it turns out that it only compiles in to the CLI version of PHP, not the Apache module. As a result, I spent many hours trying to track down why function_exists('pcntl_fork') was returning false even though it compiled correctly. It turns out it returns true just fine from the CLI, and only returns false for HTTP requests. The same is true of ALL of the pcntl_*() functions.
Giriş
PHP'deki Süreç Denetimi desteği, Unix tarzı süreç oluşturma, program çalıştırma, sinyal işleme ve süreç sonlandırmayı gerçekleştirir. Süreç Denetimi bir HTTP sunucu ortamında etkinleştirilmemelidir yoksa ortamda kullanılan bir Süreç Denetimi işlevi beklenmedik sonuçlar verebilir.
Bu belge Süreç Denetim işlevlerinin her birinin genel kullanımını açıklamak amacıyla oluşturulmuştur. Unix süreç denetimi hakkında ayrıntılı bilgi edinmek için fork(2), waitpid(2) ve signal(2) kılavuz sayfaları ile sistem belgelerinize ve Advanced Programming in the UNIX Environment [W. Richard Stevens (Addison-Wesley)] gibi kaynaklara bakınız.
PCNTL eklentisi, sinyal işleme geriçağırım mekanizması olarak, önceki mekanizmadan daha hızlı olduğu için artık tikleri kullanmaktadır. Bu değişiklik "kullanıcı tikleri" ile aynı anlamsallıktadır. Geriçağırım işlevlerinizin yerlerini belirtmek için declare() deyimini kullanın. Bu, eşzamansız olayların işlenme maliyetini küçültür. Geçmişte, PHP'nin PCNTL destekli derlenmesi, betiğiniz PCNTL kullanmasa bile hep bu maliyetin yüksek olmasına sebep olurdu.
PHP 4.3.0 öncesinde tüm PCNTL betiklerinin çalışması için yapması gereken tek ayar, ya geriçağırım işlevlerinin bulunduğu bölümde declare() kullanmak ya da yeni declare() küresel sözdizimini kullanarak bu işlevleri betiğin tamamı için etkin kılmaktı.
Bilginize: Bu eklenti Windows sistemlerinde çalışmaz.
