linux 怎么守护进程

pxfaizy

问题描述

用 php index.php start 启动服务是正常的
截图
但是关闭终端以后服务就停了;

用 php index.php start -d 启动服务以后,虽然提示也启动了,但是实际设备数据入不了库,也没有打印设备连接以后的日志;

截图

不知道有没有表达清楚:就是前面的指令一切功能正常,设备能连接服务,也能上传数据;但是关闭终端就停了,用了守护的命令,虽然服务是一直启的,但是设备数据上不来。

把数据库初始化放到 onWorkerStart 以后,运行会报错
截图

之前我是写到前面的
截图
这个是正常的,但是移到了这个方法里面就报错了
截图

数据库初始化已经移到 onWorkerStart 里;但是还是那个问题,用debug模式能正常使用,用守护进程的方式就没反应,也没有报错。
截图

问题已解决,感谢大佬帮忙

428 2 0
2个回答

walkor 打赏

数据库初始化放在onWorkerStart里,不要提前初始化数据库

  • pxfaizy 2024-07-29

    改完以后报错了

  • walkor 2024-07-29

    你的代码,报错你要自己解决下

  • pxfaizy 2024-07-29

    那我先研究下吧,谢谢

  • pxfaizy 2024-07-29

    数据库报错的问题解决了,但是现在还是没反应,数据不入库

  • pxfaizy 2024-07-29

    成功了,前面是我看错了,数据已经上来了,非常感谢

小W

php index.php start -d

这个启动后,服务在后端运行

Worker::$stdoutFile = '日志路径';

所有向终端的输出(echo var_dump等)都会被重定向到stdoutFile指定的文件中

用了守护的命令,虽然服务是一直启的,但是设备数据上不来。

这个问题应该是你程序问题,具体的看如何实现的

  • pxfaizy 2024-07-29

    不清楚你说的这个 stdouFile ;但是找到一个workerman.log;里面也看不出什么来

  • 小W 2024-07-29

    上代码吧

  • 小W 2024-07-29

    这.......你也 不能吧require_once放到那里面啊,也就是所有的数据库逻辑都在require的文件里?

  • 小W 2024-07-29

    就不可以把数据库的初始化单独拿出来,放到onWorkerStart里?

  • pxfaizy 2024-07-29

    那个数据库里面也没有逻辑,主要就一个连接数据库,还有封装了几个数据库的常规方法(执行语句,返回id,返回结果什么的);
    那我先检查下代码里的报错吧,谢谢

  • 小W 2024-07-29

    调用那个函数的对象是个null

  • pxfaizy 2024-07-29

    我好像知道问题出在哪里了,之前我是在页面头部就引用了这个数据库的类,然后后面 $worker->onMessage 里有用到数据库,现在我在 $worker->onWorkerStart 里引用;其他地方就找不到这个类了,所以是个null;那我现在应该要怎么做了,

  • pxfaizy 2024-07-29

    问题已解决,感谢

×
🔝