当从命令行(通过Ctrl + c)或使用kill命令终止cron进程时,是否可以调用函数?
我努力了 register_shutdown_function(),但是当脚本被杀死时似乎没有被调用,但是当脚本正常结束时会被调用。
我试图将结果记录到一个文件,并在cron实例自动终止时更新数据库值(即运行时间过长)。
当从命令行(通过Ctrl + c)或使用kill命令终止cron进程时,是否可以调用函数?
我努力了 register_shutdown_function(),但是当脚本被杀死时似乎没有被调用,但是当脚本正常结束时会被调用。
我试图将结果记录到一个文件,并在cron实例自动终止时更新数据库值(即运行时间过长)。
根据a 在手册中评论 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'); ?>这种方式当过程收到一个 这些信号,它正常退出, 并调用shutdown函数。 ...(缩写以节省空间,阅读全文)
如果这太麻烦了,我会考虑通过设置时间限制来从PHP中进行超时。达到限制将引发致命错误,并且应该正常调用关闭函数。