ID:               22452
 Updated by:       [EMAIL PROTECTED]
 Reported By:      mikan at playcollective dot com
-Status:           Feedback
+Status:           No Feedback
 Bug Type:         Scripting Engine problem
 Operating System: Linux (RedHat 7.2)
 PHP Version:      4.3.0
 New Comment:

No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Open". Thank you.




Previous Comments:
------------------------------------------------------------------------

[2003-02-27 08:06:55] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php4-STABLE-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php4-win32-STABLE-latest.zip



------------------------------------------------------------------------

[2003-02-27 05:50:07] mikan at playcollective dot com

I've been developping a daemon-script that runs in the background,
after being spawned from the parent script.

i use an:

//  we are parent. spawn child and exit.
    $sock = fsockopen (getenv("SERVER_NAME"), 80);
    if(!$sock){
      echo "ERROR: $errstr ($errno)\n";
    } else {
      if(socket_set_blocking($sock, false)){
        fputs($sock, "GET ".getenv("REQUEST_URI")."?child=1
HTTP/1.1\n");
        fputs($sock, "Host: ".getenv("SERVER_NAME")." \n");
        fputs($sock, "Connection: close\n\n");
        fclose($sock);
    } else {
      echo "ERROR: blocking socket. execution halted.\n";
      exit();
    }
  }

to spawn the child process (fork is not supported on the system this
script is developed for). this code essentially opens a non-blocking
socket to itself, with the variable child=1, and exits. the child
process is now running.

this child process starts with:

  set_time_limit (0);
  ignore_user_abort(true);

to be able to run "forever"...
after this it goes into an eternal while loop.

now, the problem is the following: if nothing happens within the loop
(e.g. no output is produced, the script only checks and sleeps) the
script halts (but doesn't die/exit) after exactly 300 seconds. the
process still exists in the process list on the server.

if the script produces an non-fatal error within every 300 seconds, it
continues running happily for hours and hours and hours.

i tried outputting a "boo" message using echo "boo"; every ten seconds,
and that didn't seem to work. i tried flushing after echoing, that
didn't work either. now i free a mysql-result that doesn't exist, and
that DOES work!



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=22452&edit=1

Reply via email to