* LÖSUNG IN DER ANTWORT UNTER *PHP Gabel Limit Childs in der Task
ich ein Problem mit Kindern im multifork PHP-Skript zu begrenzen ... Scheint wie letztes Kind endet nie .. Ich bin wirklich müde und kann den Fehler nicht finden, könnten Sie bitte helfen? Es ist nicht die meisten Zeiten enden ...
<?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"
>
Ergebnis meiste Zeit ist:
[+][+][+][+][+][~][-][+][~][-][+][~][-][+][~][-][+][~][-][+][~][-][+][~][~][~][-][+] (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 ...
wie letztes Kind scheint am Ende gar nicht oder zumindest tut Trigger sig-Handler ...
- [+] < - kurz vor Forking - Anzahl: 12
- [~] < - kurz vor dem Kind Ausfahrt - zählen: 12
- [-] < - sig Handler nach Kind Ausfahrt - zählen: 11
Hilfe?
PS. Das Seltsame ist, dass es manchmal endet.
Sie haben diese Frage und diese Antwort nicht löschen, weil es nur einzelne echte Arbeitscode, den ich gefunden habe! Schade, dass ich dich nicht zweimal upbooten kann!) –