Re: Starting a background process and reporting failure if applicable
| From: | Aziz Saleh | Date: | Mon, 17 Aug 2020 13:29:49 +0000 |
| Subject: | Re: Starting a background process and reporting failure if applicable | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-327287@lists.php.net to get a copy of this message | ||
It would be better to use proc_open imo which will allow you to get the
output/state built in php functionality:
https://www.php.net/manual/en/function.proc-open.php
On Mon, Aug 17, 2020 at 9:15 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
>