|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2002-08-02 10:18 UTC] scottg at particle dot 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.
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Dec 15 15:00:01 2025 UTC |
You should redirect stdin too. The following example returns _immediately_: system("sleep 10 </dev/null >/dev/null 2>/dev/null &");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.