Re: Starting a background process and reporting failure if applicable
| From: | Paul M Foster | Date: | Mon, 17 Aug 2020 19:23:05 +0000 |
| Subject: | Re: Starting a background process and reporting failure if applicable | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-327292@lists.php.net to get a copy of this message | ||
On Mon, Aug 17, 2020 at 02:51:58PM -0400, Tedd Sperling wrote:
>
>
> > On Aug 17, 2020, at 9:14 AM, Jānis Elmeris <janis.elmeris@lv.lv> wrote:
> >
> > Hello!
> >
> > I would like to start a PHP script in the background from within another PHP script. I
> > would like to monitor all error cases properly.
> >
> > Is there an easy way to see if that background script was started successfully? The
> > background script would write its errors into an error log that I'm monitoring. But what about
> > starting the script itself?
> >
> > I'm trying to start a background script like this:
> >
> > exec('nohup php sleeps.php > /tmp/tt 2>&1 &', $output, $status);
> > error_log('execute_shell: ' . var_export(['status' => $status,
> > 'output' => $output], true));
> > exec('nohup php sleeps_nonexist.php > /tmp/tt 2>&1 &', $output,
> > $status);
> > error_log('execute_shell: ' . var_export(['status' => $status,
> > 'output' => $output], true));
> >
> > The first
exec runs all right in the background
> > (asynchronously).
> > The second one behaves in exactly the same way ($status ===
> > 0), even though file "sleeps_nonexist.php" does not exist.
> >
> > Running in the command line manually, this would give status
> > 0:
> > nohup php sleeps.php > /tmp/tt 2>&1
> > echo $?
> >
> > This would give status 1:
> > nohup php sleeps_nonexist.php > /tmp/tt 2>&1
> > echo $?
> >
> > Regards,
> > Janis
>
>
> Janis:
>
> Look at header — it’s much simpler.
>
> For example, I often use it to start another script from within a script, like so:
>
> if ($auth == 0)
> {
> // send user to log on page
> header('Location:log-on.php');
> exit();
> }
>
Yeah, but header doesn't run asynchronously does it? Plus, even if the
"header" script returns, that exit() call will abort the parent script.
Paul
--
Paul M. Foster
http://noferblatz.com
http://quillandmouse.com