您的位置:首页 >ThinkPHP在Linux如何进行代码热更新
发布于2026-04-20 阅读(0)
扫一扫,手机访问
想让 ThinkPHP 在 Linux 环境下实现代码热更新,避免反复重启服务?主流做法是借助 Swoole 常驻内存运行,并通过文件监控或进程信号来触发平滑重启。下面这套配置和操作指南,可以直接拿来落地。

这是目前与 ThinkPHP 6+ 集成度最高、最便捷的方案。
composer require topthink-swoole。php think swoole。默认会监听 0.0.0.0:80,如果端口被占用,记得去 config/swoole.php 配置文件里调整。php think swoole start|stop|restart|reload。.env 文件中设置 APP_DEBUG=true,热更新功能默认就会开启,它基于文件监控自动触发 reload。config/swoole.php 中明确配置 hot_update 项:
'hot_update' => [
'enable' => true, // 开启文件监控自动 reload
'name' => ['*.php'], // 监控的文件后缀,通常就是 PHP 文件
'include' => [app_path()], // 监控的目录,默认是应用目录
'exclude' => [], // 需要排除的目录
],
'options' => ['daemonize' => true]。不过有个经验之谈:文件监控功能一般建议只在调试环境启用,生产环境最好关闭,以降低不必要的性能开销和潜在风险。如果你的项目使用的是 Workerman,热更新的思路类似,但具体操作有些不同。
php worker.php reload,这实际上是向主进程发送了 SIGUSR1 信号。php.ini 或相应的配置文件中关闭 OPcache(设置 opcache.enable=0 和 opcache.enable_cli=0),然后重启 PHP 进程。否则,你改了文件,OPcache 里还是旧的字节码,更新自然不会生效。Worker::runAll() 执行之后动态加载或自动加载的文件有效。比如,在回调函数里引入的文件。那些在进程启动初期就加载好的文件,改动后通常需要重启才能生效。有时候,我们更新的可能不是 PHP 业务逻辑代码,而是一些配置、数据字典或者模板文件。对于这类场景,有更轻量的方法。
runtime/update/ 这类临时目录,使用 PHP 的 ZipArchive 类解压并覆盖到项目根目录。include 引入一个临时 PHP 文件执行,完成后删除该文件)。最后,聊聊生产环境的实践原则。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9