PHP içinde CPULimit kullanma

2 Cevap php

Ben kendi FTP sunucusundan bazı verileri almak için bir müşteri üretim sunucusuna düzenli olarak çalıştırmak için planlanmış olan bir komut dosyası var. Bu planlandığı gibi hatta müşteri çalışıyor, gündüzleri çalıştırmak gerekiyor. Bazen, komut müşterilerin üretim ortamını yavaşlatır CPU büyük miktarlarda kaplıyor. Ben sürecini kontrol etmek CPULimit kullanabilirsiniz düşündüm, ama ben PHP içinde düzgün çalışması için almak gibi olamaz. Ben aşağıdaki satırları içeren bir Sandbox komut dosyası var:

$pid = getmypid();
exec("/usr/bin/cpulimit -p $pid -l 20 -z < /dev/null 2>&1 > /dev/null &");

Ben pid almak ve komut satırından tam bu komutu çalıştırdığınızda harika çalışıyor. Ben komut dosyası çalıştırdığınızda Ancak, ben almak [1]+ Stopped php web/sandbox/sandbox.php. Ben tam bu birçok kez olduğu gibi PHP scriptler arka plan görevleri çalıştırmak. Neyi yanlış yapıyor olabilir?

Thanks in advance,
~ JamesArmes

2 Cevap

CPULimit ne yapar? Bu elinizin altında herhangi bir Fedora kurulum komut değil ....

Çok fazla CPU zamanı birikir zaman süreci askıya gibi görünüyor; nasıl yerine Yaptı kullanmaya ne dersiniz?

CPULimit defalarca süreci SIGSTOP ve SIGCONT sinyalleri göndererek CPU kullanımını sınırlar. Bu sinyallerin arasındaki zamanlamayı denetleyerek, CPU kullanımı kısılır.

El CPULimit çalıştırdığınızda, muhtemelen arka planda PHP komut dosyası yayınlanıyor. Betik aslında durdu, ama arka planda çalışan beri, kabuk umurumda değil ve bunu rapor olmadığını düşünüyor edilir.

Eğer komut kendisi CPULimit için çağrı dahil olduğunda, komut ön planda çalışan, ve kabuk rapor gelmez.

Her iki durumda CPULimit aslında onun işi olduğunu göreceksiniz, tek fark, kabuk durumu davranır yoludur.