Sziasztok
<?php
function fork($i=0){
$pid=pcntl_fork();
if($pid == -1){
die("fork?\n");
} else if (!$pid){
for($x=1;$x<5;$x++){
echo("$i - $x : gyermek...\n");
sleep(1);
}
}
}
$o=0;
while($o<10){
fork($o++);
if($o==11) die('nem megy a szamolas!');
}
?>
A cél az lenne, hogy a forkolt folyamat forkonként ötször kiírja másodpercenként léptetve a forkolás sorszámát és hogy hányadik kiírásnál tart.
Ehhez képest ezt kapom:
0 - 1 : gyermek...
1 - 1 : gyermek...
2 - 1 : gyermek...
3 - 1 : gyermek...
4 - 1 : gyermek...
5 - 1 : gyermek...
6 - 1 : gyermek...
7 - 1 : gyermek...
8 - 1 : gyermek...
9 - 1 : gyermek...
Ha a sleep()-et kihagyom, úgy fut ahogy kell, viszont én várakoztatni szeretném a lefutást lehetőleg úgy, hogy ne egyen erőforrást és a for ciklus is lefusson rendeltetése szerint.
Van rá valakinek ötlete?
Köszönöm
- 1030 megtekintés
Hozzászólások
ALARM szignál?
- A hozzászóláshoz be kell jelentkezni
Köszönöm. :)
pcntl_alarm(sec) pontosan...
- A hozzászóláshoz be kell jelentkezni
Még egy kérdés:
A a forkolt szálban egy külső programot szeretnék indítani, mondjuk cdrecord, mplayer, vagy ilyesmik, hogy oldható meg, hogy az elindulás után azonnal ne ölje le a külső programot, hanem várjon és hagyja futni határozatlan ideig, amíg egy posix_kill()-lel azt nem mondom, hogy leállhat? A system() parancsban indított programot az elindulása után azonnal megöli.
- A hozzászóláshoz be kell jelentkezni