#18707 [Opn]: Can't run PHP script in background from a PHP CGI script?

From: Date: Fri, 02 Aug 2002 16:23:49 +0000
Subject: #18707 [Opn]: 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-15850@lists.php.net to get a copy of this message
ID: 18707 Updated by: sander@php.net Reported By: scottg@particle.net Status: Open Bug Type: Program Execution Operating System: Linux 2.2.20 PHP Version: 4.2.1 New Comment: Ah, #11430! Probably related. Previous Comments: ------------------------------------------------------------------------ [2002-08-02 12:18:30] sander@php.net Can't reproduce, but i'm using the CLI binary... (IIRC, there is another bug similar to this one, where the header output gets repeated almost forever... can't find the bug # anymore) ------------------------------------------------------------------------ [2002-08-02 11:56:46] scottg@particle.net 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. ------------------------------------------------------------------------ [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

« previous php.bugs (#15850) next »