我在thinkphp 5
中整合了Workerman
后,使用Crontab
作为定时任务,根据官方提供的文档,已经整合成功,具体环境及软件版本如下:
整合完成后,使用 php crm_server.php start -d
可以正常启动守护进程,且以下代码执行成功:
但是此时想要停止Workerman
中的Crontab
定时任务,使用php crm_server.php stop
却无法停止,报错信息如下:
此时在以上代码的Kernel
控制器中新增stop()
方法:
然后再次执行php crm_server.php stop
,报错信息已经消失,但是任务依然没有终止:
日志文件中依然会有输出:
按照添加stop()
的方法,添加reload()
、restart()
、status()
方法然后调用Workerman
中的对应方法,依然无效果,请问各位大佬,此时我应该如何实现php crm_server.php
+ stop
、reload
、restart
、status
的功能?
看起来是tp截获了命令,导致workemran无法收到命令。
不知道你为什么把tp和workemran整合在一起,如果你想在workerman中用tp的数据库类,没必要把tp和workerman在代码层面整合在一起,只需要在纯净的workerman项目中利用
composer require topthink/think-orm
将tp的数据库组件加进来即可。tp-orm手册 https://www.kancloud.cn/manual/think-orm/1257998现在不确定是不是tp截获了命令,我按照您在另外一个帖子里提供的方法,在代码中执行
posix_kill(posix_getppid(), SIGINT);
命令依然无法停止。我先试一下您说的workerman整合tp-orm的方法,看看修改成本大不大。非常感谢。