Is there some way to detect a process/window kill/close/end from PHP CLI on Windows?
| From: | tutiluren at tutanota dot com | Date: | Sun, 12 Jul 2020 00:00:25 +0000 |
| Subject: | Is there some way to detect a process/window kill/close/end from PHP CLI on Windows? | ||
| Groups: | php.windows | ||
| Request: | Send a blank email to php-windows+get-31482@lists.php.net to get a copy of this message | ||
I'm trying to handle the very common event of somebody killing a running PHP CLI terminal
window by clicking its "X" or by killing it from the command line with
"taskkill".
By "handle", I mean "I want this quick but important function of mine to run before
it ends".
I current already use
register_shutdown_function(), which sounds like it would be
perfect for this, only it's never called except if the script ended by itself and absolutely
nothing unexpected happened.
In my tests, the function set by register_shutdown_function() is NOT called when the
window is closed (or the process is killed by other means), nor when Ctrl + C is
pressed while it's running. It *only* seems to run when the script exited on its own.
sapi_windows_set_ctrl_handler() *does* execute when Ctrl + C is pressed, but not when
the window is closed, so it has very limited use. I guess I will set
sapi_windows_set_ctrl_handler() to the same function as
register_shutdown_function(), but that, of course, still leaves the most important
situation when the PHP CLI window is "X'd down".
I almost can't believe they have *two* functions extremely related to this, but none for
detecting the "kill signal"? In fact, why did they even bother to make
sapi_windows_set_ctrl_handler() a separate function instead of just baking it into
register_shutdown_function()?
I just want to be able to detect the "close window" signal. Please let there be a way... I
really need this. It's actually very strange to me that the
sapi_windows_set_ctrl_handler() function was just recently added, and I don't
understand why some things are Windows-specific when one of the major great things about PHP is that
it's (supposedly) cross-platform.
PHP 7.4.8
Windows 10 Pro 1903