laravel octane reload 问题

如果是辅助函数
当新增一个辅助函数的时候
控制器里面调用
然后 reload 会提示找不到这个函数
我测试了一下

laravel octane 问题

laravel octane 问题

laravel octane 问题

start的时候
laravel octane 问题

这个work进程的pid
laravel octane 问题
然后reload
laravel octane 问题
显示文件已经被引入了
laravel octane 问题
但是已经起了新的work进程 新的进程去启动的时候 就是执行workerstart的时候 提示文件已经被引入了 因为辅助函数是在哪个文件里面被加载注册的 如果这个文件不会被重新引入 那辅助函数也是不会被更新的 但是已经是新的work进程 为什么会显示已经引入文件了
laravel octane 问题

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

file

官方解决这个问题了

Laravel

和我这个差不多

1年前 评论
讨论数量: 19
抄你码科技有限公司

我在helper.php修改后能正常使用自定义的辅助函数,没踩到你这坑。。难道是命名空间没引用到??需要composer dump-autoload??

1年前 评论
cccdz (楼主) 1年前

start后 我新加了一个辅助函数test001 reload后 还是拿不到函数

file

file

file

stop后 在 start 就可以拿到了

file

1年前 评论
抄你码科技有限公司

不好意思,我错了。。平时是直接拉docker发版。。没去测试

1年前 评论
cccdz (楼主) 1年前
cccdz (楼主) 1年前
抄你码科技有限公司

我的测试是这样的,custom helpers 已经定义过了,所以不会再被定义。

// 我故意把function_exists注释掉了
// if (!function_exists('hello_octane')) {
    function hello_octane(): array
    {
        return [
            'file' => __FILE__
        ];
    }
// }
[2022-11-29 19:10:38] local.ERROR: Cannot redeclare hello_octane() (previously declared in /Users/jiangslee/php/laravel/hello/app/helper.php:7) {"exception":"[object] (Symfony\\Component\\ErrorHandler\\Error\\FatalError(code: 0): Cannot redeclare hello_octane() (previously declared in /Users/jiangslee/php/laravel/hello/app/helper.php:7) at /Users/jiangslee/php/laravel/hello/app/helper.php:4)
[stacktrace]
#0 {main}
"} {"request_id":"uywu9JqeYEeT"}
1年前 评论
抄你码科技有限公司 (作者) 1年前
cccdz (楼主) 1年前
cccdz (楼主) 1年前
抄你码科技有限公司 (作者) 1年前
cccdz (楼主) 1年前

file

我发现问题了 就是reload后 通过managerstart 这个启动的管理启动的work进程 感觉是复制的manager管理进程 这个进程因为也 $bootstrap($serverState)执行了这个 导致那个文件已经被加载 我现在只引入这个需要的文件 现在每次reload都会去加载那个autoload.php文件 重新注册辅助函数

我把源码改成这样就可以每次都加载到了

1年前 评论
抄你码科技有限公司 1年前
cccdz (作者) (楼主) 1年前
抄你码科技有限公司 1年前

file

官方解决这个问题了

Laravel

和我这个差不多

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!