* Ben multifork php komut çocuk herkesin sınırlayan bir sorunun mu var *PHP çatal sınırı
ALTINDA CEVAP ÇÖZÜM ... son çocuk hiç bitmez gibi görünüyor görev childs .. Gerçekten yoruldum ve hatayı bulamıyorum, lütfen yardım edebilir misiniz? ?
[+][+][+][+][+][~][-][+][~][-][+][~][-][+][~][-][+][~][-][+][~][-][+][~][~][~][-][+] (5)[-](4)(4)[~][-](3)[~][-](2)(2)[~](2)[-](1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)... etc etc ...
son çocuk gibi görünüyor
tüm sona ya da en azından o doesnt tetik değildir: O<?php
declare(ticks = 1);
$max=5;
$child=0;
function sig_handler($signo) {
global $child;
switch ($signo) {
case SIGCHLD:
$child -= 1;
echo "[-]";
}
}
pcntl_signal(SIGCHLD, "sig_handler");
$found = array(1,2,3,4,5,6,7,8,9,10,11,12);
echo "LETS GO!\n";
foreach($found as $item){
while ($child >= $max) {
sleep(1);
}
$child++;
echo "[+]";
$pid=pcntl_fork();
if($pid){
}else{ // CHILD
sleep(rand(1,5));
echo "[~]";
exit(0);
}
}
while($child != 0){
echo "($child)";
sleep(1);
}
echo "THE END.\n"
>
Sonucu en çok katıdır ... zamanların en bitmiyor sig işleyicisi ...
- [+] < - sadece çatallanmasını önce - sayısı: 12
- [~] < - sadece çocuk çıkışından hemen önce - saymak: 12
- [-] < - sig işleyicisi sonra çocuk çıkış - saymak: 11
Yardım?
PS. Garip olan şey, bazen bitiyor olmasıdır.
function sig_handler($signo){
global $child;
switch ($signo) {
case SIGCLD:
while(($pid = pcntl_wait ($signo, WNOHANG)) > 0){
$signal = pcntl_wexitstatus ($signo);
$child -= 1;
echo "[-]";
}
break;
}
}
sorun UNIX sistemlerinde sinyal işleme şekilde oldu:
Bu soruyu ve bu yanıtı silmediniz, çünkü bulduğum tek gerçek çalışma kodu! Yazık ki seni iki kere alamam!) –