/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Daemonize et PHP script med pcntl_fork
Fra : KV


Dato : 05-04-07 00:44

Jeg har et script, som jeg gerne ville køre som en daemon. Jeg kan se, at
jeg skal bruge pcntl_fork men jeg kan ikke helt få det til at fungere, så
enten har jeg for små øjne nu her midt om natten eller også har jeg
misforstået noget.

Lad os sige, at jeg har følgende eksempel:

<?php
$pid = pcntl_fork();
if ($pid == -1)
{
die('could not fork');
}
else if ($pid)
{
// we are the parent
pcntl_wait($status); //Protect against Zombie children
}
else
{
// we are the child
while(1)
{
echo ".";
sleep(1);
}
}
?>

Hvis jeg starter dette script op med php -f myscript.php, så skriver den
fint en masse punktummer, men den returnere ikke tilbage til shellen og
daemonzier PHP scriptet? Jeg kan trykke CTRL+C for at afslutte scriptet.

Hvordan får jeg den til at afslutte og vende tilbage til shellen?



 
 
Michael Zedeler (05-04-2007)
Kommentar
Fra : Michael Zedeler


Dato : 05-04-07 16:57

KV skrev:
> Jeg har et script, som jeg gerne ville køre som en daemon.
>
> <?php
> $pid = pcntl_fork();
> if ($pid == -1)
> {
> die('could not fork');
> }
> else if ($pid)
> {
> // we are the parent
> pcntl_wait($status); //Protect against Zombie children
> }
> else
> {
> // we are the child
> while(1)
> {
> echo ".";
> sleep(1);
> }
> }
> ?>
>
> Hvis jeg starter dette script op med php -f myscript.php, så skriver den
> fint en masse punktummer, men den returnere ikke tilbage til shellen og
> daemonzier PHP scriptet? Jeg kan trykke CTRL+C for at afslutte scriptet.
>
> Hvordan får jeg den til at afslutte og vende tilbage til shellen?

I "We are the parent" sker der ikke andet end at forælderen pænt venter
på at barnet bliver færdigt, hvorefter den selv afslutter. Til at starte
med kan du jo sætte den til ikke at vente, men blot afslutte. Jeg tror
bare at der er noget voodoo, som kommer til at mangle for at din process
ikke dør, når du logger ud.

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
I am less likely to answer usenet postings by anonymous authors.
Visit my home page at http://michael.zedeler.dk/

KV (05-04-2007)
Kommentar
Fra : KV


Dato : 05-04-07 17:38

> I "We are the parent" sker der ikke andet end at forælderen pænt venter på
> at barnet bliver færdigt, hvorefter den selv afslutter. Til at starte med
> kan du jo sætte den til ikke at vente, men blot afslutte. Jeg tror bare at
> der er noget voodoo, som kommer til at mangle for at din process ikke dør,
> når du logger ud.

<?php
$pid = pcntl_fork();
if ($pid == -1)
{
die('could not fork');
}
else if ($pid)
{
exit;
}
else
{
// we are the child
while(1)
{
echo ".";
sleep(1);
}
}
?>

Med ovenstående venter den stadigt - den afslutter ikke til shell.



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste