Michael Sims wrote:
> Justin Patrin wrote:
>> On Wed, 21 Jul 2004 10:09:52 -0700, bruce <[EMAIL PROTECTED]>
>> wrote:
>>> 2) i could run the perl script, and have it somehow run in the
>>> background.... this would ba good, if there's a way to essentially
> [...]
>> AFAIK there's no way to do this. When the request ends (user hits
>> stop, exit or die called) the process is ended. This includes
>> children.
>
> There are ways around that, though, at least if you're running unix:
>
> exec('bash -c "exec nohup setsid your_command > /dev/null 2>&1 &"');

Sorry to followup to my own post, but I just did some quick testing and apparently
none of the above (nohup, setsid) is really necessary.  As long as the output of the
command is redirected somewhere and the "&" is used to start it in the background it
will continue to run even if the process that launched it exits or is killed.  I
tested this with the following (named 'test.php'):

---
#!/usr/local/bin/php
<?

if (isset($argv[1])) {
  exec('./test.php > /dev/null &');
}

sleep(10);

exec('wall testing - ignore '.getmypid());
?>
---

I opened two SSH sessions, ran the above script in one (using './test.php 1') then
immediately exited the SSH session.  The PHP processes (both of them) continued to
execute and I saw the "wall" output from both scripts in my other SSH session.  So
apparently the nohup setsid stuff is overkill...

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to