sapi_windows_set_ctrl_handler
设置或删除一个CTRL事件处理程序
PHP 7.4.0 及以上版本适用。
sapi_windows_set_ctrl_handler 是一个用于在 Windows 命令行环境下处理控制台事件(如按下 Ctrl+C、关闭窗口等)的函数。通过注册自定义的处理程序,可以优雅地中断或终止脚本的执行。
bool sapi_windows_set_ctrl_handler(callable $handler, bool $add = true)
返回布尔值,成功时为 true,失败时为 false。
<?php function ctrl_handler(int $event) { switch ($event) { case PHP_WINDOWS_EVENT_CTRL_C: case PHP_WINDOWS_EVENT_CTRL_BREAK: echo "捕获到中断信号,准备退出...\n"; exit(0); default: return false; } } <p>sapi_windows_set_ctrl_handler("ctrl_handler", true);</p> <p>// 模拟长时间运行<br> echo "脚本运行中,按 Ctrl+C 中断...\n";<br> while (true) {<br> sleep(1);<br> }<br> ?><br>
这个示例中,定义了一个处理函数 ctrl_handler,当用户按下 Ctrl+C 或 Ctrl+Break 时触发,输出提示信息并优雅地退出程序。通过 sapi_windows_set_ctrl_handler 注册该处理函数后,脚本进入无限循环模拟长期运行,用户可以中断执行来测试处理效果。