#18707 [Bgs]: Can't run PHP script in background from a PHP CGI script?
| From: | scottg at particle dot net | Date: | Fri, 02 Aug 2002 15:56:46 +0000 |
| Subject: | #18707 [Bgs]: Can't run PHP script in background from a PHP CGI script? | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-15846@lists.php.net to get a copy of this message | ||
ID: 18707
User updated by: scottg@particle.net
Reported By: scottg@particle.net
Status: Bogus
Bug Type: Program Execution
Operating System: Linux 2.2.20
PHP Version: 4.2.1
New Comment:
Yes, system("sleep 10 </dev/null >/dev/null 2>/dev/null &");
works because your running sleep or another binary executable.
You must run another PHP script in order to see how crazy it gets.
Wether you run
system("/usr/php/bin/php -f /somepath/bg.cgi >>/dev/null 2>>/dev/null
&");
or
system("/usr/php/bin/php -f /somepath/bg.cgi </dev/null >/dev/null
2>/dev/null &");
It works if bg.cgi is a binary like sleep but will not work if bg.cgi
is another PHP script such as:
#!/usr/php/bin/php -q
<?
sleep(5);
mail ("scottg@nospam.com", "Test Subject", "Test Message");
?>
Same thing happens under 4.2.1 and 4.2.2 and probably older versions.
Previous Comments:
------------------------------------------------------------------------
[2002-08-02 10:45:40] sander@php.net
You should redirect stdin too. The following example returns
_immediately_:
system("sleep 10 </dev/null >/dev/null 2>/dev/null &");
------------------------------------------------------------------------
[2002-08-02 10:18:12] scottg@particle.net
This is the strangest thing in the world and I have no idea why it
happens. I'm using Linux 2.2.20 with PHP 4.2.1. I have PHP compiled
in as a module and I have an external PHP binary for CGI work.
I want bg.cgi to run in the background.
start.cgi:
#!/usr/php/bin/php -q
<?
system("/usr/php/bin/php -f /somepath/bg.cgi >>/dev/null 2>>/dev/null
&");
echo "Ok!\n";
?>
bg.cgi:
#!/apps/php/bin/php -q
<?
sleep(5);
mail ("scottg@nospam.com", "Test Subject", "Test Message");
?>
I run start.cgi with the brower like a normal cgi script -
http://www.whatever.com/start.cgi. The web page says
Ok! like it
should. In the background now I have a bg.cgi process but its going
crazy. It dies and restarts repeatedly. It gots on for about 1 minute
then gives up. The process number increases with each new bg.cgi
process. Only one bg.cgi process every exists though. Strangest thing
ever. I never do get the email message bg.cgi is suspose to send.
If I run start.cgi from the command prompt all is well, only one bg.cgi
runs fine and I get the email after 5 seconds.
Anyone know why bg.cgi runs crazy if called like this?
Oh ya, if I had a start.php:
<html>
<? system("/apps/php/bin/php -q -f /home/scottg/web/run/bg.cgi
>>/dev/null 2>>/dev/null &"); ?>
</html>
and just viewied it in the browser so that the php module runs bg.cgi
all works fine too.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=18707&edit=1