Hi All,
[This is quite a long post, my apologies :(]
I have the CLI version of PHP 4.3.3 running under FreeBSD 5.1-Release. I seem to have encountered some 'strange' behaviour with signals...
I may have missed the plot so far as signals go under PHP, but from within my signal handler routine - I appear to only be able to call '1 level' of user functions, i.e. If I call a user function, which in turn calls another user-function, my signal handler appears never gets returned to.
e.g.
function my_sig_handler( $signo ){
if( $signo == SIGTERM ){ echo( "Term received, cleaning up...\n" ); do_cleanup(); echo( "Clean up done.\n" ); exit(); }
}
Appears to work, but _IF_ "do_cleanup()" in turn calls another routine, e.g.
function do_cleanup(){
echo( "Cleaning up...\n" ); write_my_log_entry( "Cleaning up" ); echo( "Clean up is now complete.\n" );
}
All I see on the output is:
" Term received, cleaning up... Cleaning up... [log entry written]
devbox> "
If I comment out the "write_my_log_entry" function in do_cleanup() - I get:
" Term received, cleaning up... Cleaning up... Done cleaning up Clean up is now complete.
devbox> "
Which is what I'd expect.
I have thoroughly checked "write_my_log_entry()" - and even if I just change that to a simple "echo" routine [i.e. no actual code] - if it's called from the signal handler, as a function being called by a function - the signal handler never see's the light of day once write_my_log_entry() has finished.
I can kind of work around this, by in-lining the code from the actual functions - but I'd rather not (for obvious reasons).
Anyone else out there done a lot of work with PHP signals who might be able to shed some light on this?
Thanks in advance,
-Karl
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php