当从命令行(通过 Ctrl+c)或使用 kill 命令杀死 cron 进程时,是否可以调用函数?
我试过register_shutdown_function()了,但是当脚本被杀死时似乎没有被调用,而是在脚本正常结束时被调用。
我正在尝试将结果记录到文件中并在 cron 实例自动终止时更新数据库值(即运行时间过长)。
当从命令行(通过 Ctrl+c)或使用 kill 命令杀死 cron 进程时,是否可以调用函数?
我试过register_shutdown_function()了,但是当脚本被杀死时似乎没有被调用,而是在脚本正常结束时被调用。
我正在尝试将结果记录到文件中并在 cron 实例自动终止时更新数据库值(即运行时间过长)。
根据手册中的评论register_shutdown_function(),这可以通过以下方式完成:
当使用 CLI(也许没有 CLI 的命令行 - 我没有测试它)时,如果进程获得 SIGINT 或 SIGTERM,则不会调用关闭函数。只有 PHP 的自然退出调用了关闭函数。为了克服这个问题,编译命令行解释器
--enable-pcntl并添加以下代码:<?php declare(ticks = 1); // enable signal handling function sigint() { exit; } pcntl_signal(SIGINT, 'sigint'); pcntl_signal(SIGTERM, 'sigint'); ?>这样,当进程收到其中一个信号时,它会正常退出,并调用关闭函数。... (为节省篇幅,请阅读全文)
如果这太麻烦了,我会考虑通过设置时间限制来从 PHP 中超时。达到限制将引发致命错误,并且应该正常调用关闭函数。