Re: pcntl_fork behavior with php version 5.1.2
| From: | Ralf Gnädinger | Date: | Thu, 29 Mar 2012 21:23:53 +0000 |
| Subject: | Re: pcntl_fork behavior with php version 5.1.2 | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-317356@lists.php.net to get a copy of this message | ||
I will try posix_setsid(). Both machines were accessed via a ssh client
(e.g. putty or ssh from a other linux box).
Thanks for your advice.
Am 29. März 2012 23:08 schrieb Stuart Dallas <stuart@3ft9.com>:
> On 29 Mar 2012, at 20:49, Ralf Gnädinger wrote:
>
> > i got some trouble with a PHP script using pcntl_fork do run some work in
> > background.
> > Runnig my script on my development system (PHP version 5.3.3-7) it
> behaves
> > like
> > intended. But running it on my production test system (PHP version PHP
> > 5.1.2), i got
> > some strange results. The problem is, that when i logout from my SSH
> > session the
> > console closes not properly, like somethings is kept open. Sadly,
> updating
> > this old PHP
> > version is not a option... :/
> >
> > Does anyone have an idea whats going on?
> >
> > Thanks in advance
> >
> > Ralf
> >
> > The script is this:
> >
> > #!/usr/bin/env php
> > <?php
> >
> > $pid = pcntl_fork();
> > if ($pid == -1) {
> > die('Fork failed!');
> > } else if($pid > 0) {
> >
> > exit(0); // close parent process
> >
> > } else { // child process:
> >
> > while(true) {
> > sleep(10);
> > // do your work -- stripped
> > }
> > }
> > ?>
> >
> > do not work with:
> > PHP 5.1.2 with Suhosin-Patch 0.9.6 (cli) (built: Dec 12 2007 02:42:35)
> > Copyright (c) 1997-2006 The PHP Group
> > Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
> >
> >
> > works with:
> > PHP 5.3.3-7+squeeze3 with Suhosin-Patch (cli) (built: Jun 28 2011
> 08:24:40)
> > Copyright (c) 1997-2009 The PHP Group
> > Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
> > with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH
>
> You need to detach the child from the terminal using posix_setsid(). I
> don't know why it's "working" on your development machine, but it's
> probably simply that you're not seeing this issue due to how you access
> that development machine.
>
> -Stuart
>
> --
> Stuart Dallas
> 3ft9 Ltd
> http://3ft9.com/