首页
下载
文档
问答社区
视频
捐赠
源代码
AI 助理
赞助商
CRMEB
Apipost
腾讯云
微擎
禅道
51Talk
商业产品
Swoole AI 智能文档翻译器
Swoole-Compiler PHP 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
外部代码导致多进程热更新失败
### 问题描述 在进程外面调用类 子进程里面热更新失效 ### Swoole版本,PHP版本,以及操作系统版本信息 Swoole Version => 4.4.17 PHP 7.3.16-1+ubuntu18.04.1+deb.sury.org+1 框架 yaf 备注 opchahe ### 相关代码 ```php $model = new Finance_TaskerModel(); $workerNum = $model->taskCon['count']??1; $pool = new Swoole\Process\Pool(2); unset($model); $pool->on("WorkerStart", function ($pool, $workerId) { $model1 = new Finance_TaskerModel($workerId); $model1->run($workerId); unset($model1); }); $pool->on("WorkerStop", function ($pool, $workerId) { echo "Worker#{$workerId} is stopped\n"; }); $pool->start(); ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? 期待的结果是想要外部调用的方法和类不影响里面进程的更新 实际上是 添加了 ```php $model = new Finance_TaskerModel(); $workerNum = $model->taskCon['count']??1; ``` 则热更新失败
发布于3年前 · 3 次浏览 · 来自
提问
路上
### 问题描述 在进程外面调用类 子进程里面热更新失效 ### Swoole版本,PHP版本,以及操作系统版本信息 Swoole Version => 4.4.17 PHP 7.3.16-1+ubuntu18.04.1+deb.sury.org+1 框架 yaf 备注 opchahe ### 相关代码 ```php $model = new Finance_TaskerModel(); $workerNum = $model->taskCon['count']??1; $pool = new Swoole\Process\Pool(2); unset($model); $pool->on("WorkerStart", function ($pool, $workerId) { $model1 = new Finance_TaskerModel($workerId); $model1->run($workerId); unset($model1); }); $pool->on("WorkerStop", function ($pool, $workerId) { echo "Worker#{$workerId} is stopped\n"; }); $pool->start(); ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? 期待的结果是想要外部调用的方法和类不影响里面进程的更新 实际上是 添加了 ```php $model = new Finance_TaskerModel(); $workerNum = $model->taskCon['count']??1; ``` 则热更新失败
赞
0
分享
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
评论
2020-12-05
鲁飞
Reload 操作只能重新载入 Worker 进程启动后加载的 PHP 文件,使用 get_included_files 函数来列出哪些文件是在 WorkerStart 之前就加载的 PHP 文件,在此列表中的 PHP 文件,即使进行了 reload 操作也无法重新载入。要关闭服务器重新启动才能生效。 https://wiki.swoole.com/#/server/methods?id=reload
赞
1
回复
2020-12-06
路上
回复
鲁飞
谢谢提供方法 我这边打印看看是否是这个类在外部加载以后 work进程是否还一直存在
赞
0
回复
2020-12-04
路上
Finance_TaskerModel 在进程外实例化以后 即使unset 也会导致该类不能热更新
赞
0
回复
微信公众号
热门内容
暂无回复的问答
- CodeGalaxy K3s 轻量集群节点之间如何实现负载均衡
- 关于openssl CURL WARNING swSSL_connect: SSL_connect(fd=69) failed. Error: error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small[1|394]
- 多个模型如何进行事务异常回退?
- websocket开启wss报错
- 协程tcp服务器如何使用多进程?recv()方法接收信息,打印出来的pid一直是同一个。没用使用到多进程啊。