Çatallı php uygulamaları çalıştıran

1 Cevap php

Web üzerinde bir çatallı PHP uygulaması çalıştıran olumsuz yanları nelerdir?

I have read that it should not be run under Apache for any reason, but never explained why.
The only reason I can think of is that if a script is terminated in the middle of execution, any forked process would never be terminated and might cause memory leaks.

Soru PCNTL uzantıları getirmedi

<?php
$pid = pcntl_fork();
if ($pid)
{
  //parent, execute parent code
}
else
{
  //child code
}
?>

Ben bu varsayım düzeltmek muyum?

1 Cevap

(Ve sonra exec'ing DEĞİL) bir Apache sunucu işleminden fork () çağrılması gerçekten kötü bir fikir olduğunu.

Asıl sorun dosya tanımlayıcıları hala veritabanı bağlantıları ve prizler gibi şeyler bir un-yararlı bir şekilde paylaşılacaktır anlamına gelir ebeveyn ile ortak olmasıdır.

Bunun yerine fork () kullanarak, o sadece ayrı bir işlem spawn - PHP çalıştırmak istiyorsanız, script yapmak istediklerini yapmak için çalıştırmak için komut satırı PHP yürütülebilir çalıştırın.

Aksi takdirde Apache kötü şeyler yapmak için neden - Üst işleminin ardından aynı bağlantıda daha fazla istekleri hizmet veriyorsa, örneğin, ve çatallı süreç bazı çıkış göndermek olur, bu yanıt keyfi noktalarda Interleaved alırsınız - ki rasgele gibi görünen zor teşhis hataları oluşturur. Bağlantı SSL (SSL oturum hataları bulunabilir ve benim deneyim bazı garip tarayıcı hataları oluşturarak, beklenmedik şekilde sonlandırıldı) ise işler daha az iyi çalışır.

Fork () uygun görünüyor olsa da, sadece risk değmez. Bu genel durumda çalışmaz.