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