* SOLUZIONE la risposta qui sotto *limite PHP forchetta Childs nel compito
ho avuto un problema con la limitazione Childs nello script php multifork ... Sembra come ultimo bambino non finisce mai .. Sono davvero stanco e non riesco a trovare l'errore, potresti aiutarmi per favore? E non finisce la maggior parte delle volte ...
<?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"
>
dei risultati il più delle volte è:?
[+][+][+][+][+][~][-][+][~][-][+][~][-][+][~][-][+][~][-][+][~][-][+][~][~][~][-][+] (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 ...
Sembra come ultimo figlio non si esaurisce affatto o almeno lo grilletto doesnt handler in ordine a ...
- [+] < - poco prima di sborsare - Numero di pagine: 12
- [~] < - poco prima di uscire bambino - contare: 12
- [-] < - handler in ordine dopo l'uscita del bambino - contare: 11
Aiuto?
PS. La cosa strana è che a volte finisce.
Non hai eliminare questa domanda e questa risposta, perché è solo un singolo codice di lavoro reale che ho trovato! Peccato che non posso invitarvi due volte!) –