<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0"><channel><title>mdo</title><link>http://localhost:8090</link><atom:link href="http://localhost:8090/feed.xml" rel="self" type="application/rss+xml"/><description>Hello </description><generator>Halo v2.21.10</generator><language>zh-cn</language><image><url>http://localhost:8090/upload/letter-m.png</url><title>mdo</title><link>http://localhost:8090</link></image><lastBuildDate>Sat, 8 Aug 2026 17:32:39 GMT</lastBuildDate><item><title><![CDATA[完美地解决 TP3 老系统数据的平滑读取]]></title><link>http://localhost:8090/archives/wei-ming-ming-wen-zhang-ijUnwlGO</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=%E5%AE%8C%E7%BE%8E%E5%9C%B0%E8%A7%A3%E5%86%B3%20TP3%20%E8%80%81%E7%B3%BB%E7%BB%9F%E6%95%B0%E6%8D%AE%E7%9A%84%E5%B9%B3%E6%BB%91%E8%AF%BB%E5%8F%96&amp;url=/archives/wei-ming-ming-wen-zhang-ijUnwlGO" width="1" height="1" alt="" style="opacity:0;">为了彻底、完美地解决 TP3 老系统数据的平滑读取，必须解决两个核心痛点： TP3 的盲猜反序列化机制（标量存原样，数组/对象存原生 serialize，同时兼容 json）。 TP3 与 TP6 的缓存前缀（Prefix）不一致。 以下是为你量身定制的终极落地解决方案，通]]></description><guid isPermaLink="false">/archives/wei-ming-ming-wen-zhang-ijUnwlGO</guid><dc:creator>mdo</dc:creator><category>技术</category><pubDate>Sun, 26 Jul 2026 04:30:07 GMT</pubDate></item><item><title><![CDATA[thinkphp3 redis序列化和反序列化]]></title><link>http://localhost:8090/archives/thinkphp3-redisxu-lie-hua-he-fan-xu-lie-hua</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=thinkphp3%20redis%E5%BA%8F%E5%88%97%E5%8C%96%E5%92%8C%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96&amp;url=/archives/thinkphp3-redisxu-lie-hua-he-fan-xu-lie-hua" width="1" height="1" alt="" style="opacity:0;">在老系统重构迁移至 ThinkPHP 6 (TP6) 的过程中，ThinkPHP 3 (TP3) 的 Redis 序列化历史遗留问题是最核心的连环坑之一。 TP3 的 S('key', $value) 缓存方法和底层 Redis 驱动，在存储非字符串（如数组、对象）时，有一套独特的序列化行为。如果不]]></description><guid isPermaLink="false">/archives/thinkphp3-redisxu-lie-hua-he-fan-xu-lie-hua</guid><dc:creator>mdo</dc:creator><category>技术</category><pubDate>Sun, 26 Jul 2026 04:16:33 GMT</pubDate></item><item><title><![CDATA[Table 空间极易发生哈希冲突并溢出]]></title><link>http://localhost:8090/archives/wei-ming-ming-wen-zhang-XlMGeYX8</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=Table%20%E7%A9%BA%E9%97%B4%E6%9E%81%E6%98%93%E5%8F%91%E7%94%9F%E5%93%88%E5%B8%8C%E5%86%B2%E7%AA%81%E5%B9%B6%E6%BA%A2%E5%87%BA&amp;url=/archives/wei-ming-ming-wen-zhang-XlMGeYX8" width="1" height="1" alt="" style="opacity:0;">既然你没有在业务中主动调用 Room，只使用了全局广播，那么这个问题就非常明确了：即使你不用房间功能，think-swoole 只要开启了 WebSocket，底层就会强行初始化并注入一个名为 Room 的驱动组件。 [1] 框架底层默认使用 table 类型来作为 Room 的存储介质。当进行全局]]></description><guid isPermaLink="false">/archives/wei-ming-ming-wen-zhang-XlMGeYX8</guid><dc:creator>mdo</dc:creator><category>技术</category><pubDate>Fri, 24 Jul 2026 10:03:51 GMT</pubDate></item><item><title><![CDATA[将监控程序直接跑在云端]]></title><link>http://localhost:8090/archives/jiang-jian-kong-cheng-xu-zhi-jie-pao-zai-yun-duan</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=%E5%B0%86%E7%9B%91%E6%8E%A7%E7%A8%8B%E5%BA%8F%E7%9B%B4%E6%8E%A5%E8%B7%91%E5%9C%A8%E4%BA%91%E7%AB%AF&amp;url=/archives/jiang-jian-kong-cheng-xu-zhi-jie-pao-zai-yun-duan" width="1" height="1" alt="" style="opacity:0;">将监控程序直接跑在云端（服务器），最大的好处是不需要保持个人电脑开机，能够 24 小时稳定运行。 由于在云端无法像浏览器插件那样直接复用你的日常登录状态，我们需要使用 headless（无头）浏览器技术（如 Node.js 的 Puppeteer 或 Python 的 Playwright），并在服]]></description><guid isPermaLink="false">/archives/jiang-jian-kong-cheng-xu-zhi-jie-pao-zai-yun-duan</guid><dc:creator>mdo</dc:creator><category>技术</category><pubDate>Thu, 23 Jul 2026 21:11:53 GMT</pubDate></item><item><title><![CDATA[AI 驱动型 Facebook 群组关键词监控 Chrome 浏览器插件]]></title><link>http://localhost:8090/archives/ai-qu-dong-xing-facebook-qun-zu-guan-jian-ci-jian-kong-chrome-liu-lan-qi-cha-jian</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=AI%20%E9%A9%B1%E5%8A%A8%E5%9E%8B%20Facebook%20%E7%BE%A4%E7%BB%84%E5%85%B3%E9%94%AE%E8%AF%8D%E7%9B%91%E6%8E%A7%20Chrome%20%E6%B5%8F%E8%A7%88%E5%99%A8%E6%8F%92%E4%BB%B6&amp;url=/archives/ai-qu-dong-xing-facebook-qun-zu-guan-jian-ci-jian-kong-chrome-liu-lan-qi-cha-jian" width="1" height="1" alt="" style="opacity:0;">自己开发一个类似 One Stop Social 的 Facebook 群组关键词监控工具，最核心的难点在于 Facebook 官方 API 极其严格。由于 2018 年的数据隐私风波，官方彻底关闭了普通用户通过 API 读取他人群组帖子的权限。 因此，自主开发只能采用 “自动化模拟（爬虫/自动化脚]]></description><guid isPermaLink="false">/archives/ai-qu-dong-xing-facebook-qun-zu-guan-jian-ci-jian-kong-chrome-liu-lan-qi-cha-jian</guid><dc:creator>mdo</dc:creator><category>技术</category><pubDate>Thu, 23 Jul 2026 21:05:25 GMT</pubDate></item><item><title><![CDATA[think-orm 2.0.62 单独设置数据表字段缓存驱动和数据缓存驱动]]></title><link>http://localhost:8090/archives/dd283ffe</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=think-orm%202.0.62%20%E5%8D%95%E7%8B%AC%E8%AE%BE%E7%BD%AE%E6%95%B0%E6%8D%AE%E8%A1%A8%E5%AD%97%E6%AE%B5%E7%BC%93%E5%AD%98%E9%A9%B1%E5%8A%A8%E5%92%8C%E6%95%B0%E6%8D%AE%E7%BC%93%E5%AD%98%E9%A9%B1%E5%8A%A8&amp;url=/archives/dd283ffe" width="1" height="1" alt="" style="opacity:0;">think-cache 拥有强大的多通道（Multi-store）管理能力，但问题的根源在于 think-orm 底层的调用机制太死板。即使您在 think-cache 中配置了 file 和 redis 两个完全独立的通道，think-orm 默认也只会向您通过 Db::setCache() 注入]]></description><guid isPermaLink="false">/archives/dd283ffe</guid><dc:creator>mdo</dc:creator><category>知识库</category><pubDate>Tue, 21 Jul 2026 01:29:10 GMT</pubDate></item><item><title><![CDATA[WebSocket Server + 独立 RPC Server]]></title><link>http://localhost:8090/archives/websocket-server-du-li-rpc-server</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=WebSocket%20Server%20%2B%20%E7%8B%AC%E7%AB%8B%20RPC%20Server&amp;url=/archives/websocket-server-du-li-rpc-server" width="1" height="1" alt="" style="opacity:0;">从架构角度来说，它已经接近 think-swoole 能做到的极限了，但是我仍然不建议继续这样维护。 原因不是代码写法，而是 think-swoole 本身的事件模型。 第一处问题：addListener() 仍然共享 Worker 你的代码： $rpcServer = $server-&gt;addLi]]></description><guid isPermaLink="false">/archives/websocket-server-du-li-rpc-server</guid><dc:creator>mdo</dc:creator><category>知识库</category><pubDate>Wed, 1 Jul 2026 01:30:06 GMT</pubDate></item><item><title><![CDATA[Redis 的发布/订阅（Pub/Sub） 机制]]></title><link>http://localhost:8090/archives/redis-de-fa-bu-ding-yue-pub-sub-ji-zhi</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=Redis%20%E7%9A%84%E5%8F%91%E5%B8%83%2F%E8%AE%A2%E9%98%85%EF%BC%88Pub%2FSub%EF%BC%89%20%E6%9C%BA%E5%88%B6&amp;url=/archives/redis-de-fa-bu-ding-yue-pub-sub-ji-zhi" width="1" height="1" alt="" style="opacity:0;">在 think-swoole 中，如果项目开启了多个 Worker 进程或者部署了多台服务器，直接遍历 server-&gt;connections 只能触及当前进程下的连接。 要实现跨进程、跨服务器的广播，最成熟的方案是引入 Redis 的发布/订阅（Pub/Sub） 机制。这类似于 Socket.io]]></description><guid isPermaLink="false">/archives/redis-de-fa-bu-ding-yue-pub-sub-ji-zhi</guid><dc:creator>mdo</dc:creator><category>技术</category><pubDate>Mon, 29 Jun 2026 19:48:22 GMT</pubDate></item><item><title><![CDATA[在 think-swoole 框架中融入 Custom Process（自定义进程）]]></title><link>http://localhost:8090/archives/wei-ming-ming-wen-zhang-Z754j6U2</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=%E5%9C%A8%20think-swoole%20%E6%A1%86%E6%9E%B6%E4%B8%AD%E8%9E%8D%E5%85%A5%20Custom%20Process%EF%BC%88%E8%87%AA%E5%AE%9A%E4%B9%89%E8%BF%9B%E7%A8%8B%EF%BC%89&amp;url=/archives/wei-ming-ming-wen-zhang-Z754j6U2" width="1" height="1" alt="" style="opacity:0;">在 think-swoole 框架中融入 Custom Process（自定义进程） 需要特别注意生命周期。因为 think-swoole接管了 Swoole\Server 的创建与启动，我们不能直接 $server-&gt;addProcess()，而是必须在 swoole.init 事件中，将自定义进]]></description><guid isPermaLink="false">/archives/wei-ming-ming-wen-zhang-Z754j6U2</guid><dc:creator>mdo</dc:creator><category>技术</category><pubDate>Mon, 29 Jun 2026 10:46:34 GMT</pubDate></item><item><title><![CDATA[Swoole 的自定义进程（Process）]]></title><link>http://localhost:8090/archives/swoole-de-zi-ding-yi-jin-cheng-process</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=Swoole%20%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E8%BF%9B%E7%A8%8B%EF%BC%88Process%EF%BC%89&amp;url=/archives/swoole-de-zi-ding-yi-jin-cheng-process" width="1" height="1" alt="" style="opacity:0;">你目前是通过 think-swoole 框架提供的沙箱（Sandbox）在 swoole.init 事件中，使用主服务器的 $server-&gt;addListener(...) 来动态监听 RPC 端口（9513）。 正如之前分析的，$server-&gt;addListener() 产生的子端口，无法通过]]></description><guid isPermaLink="false">/archives/swoole-de-zi-ding-yi-jin-cheng-process</guid><dc:creator>mdo</dc:creator><category>技术</category><pubDate>Sun, 28 Jun 2026 23:30:35 GMT</pubDate></item><item><title><![CDATA[为 RPC 端口和 Websocket 端口配置独立的 Worker 进程]]></title><link>http://localhost:8090/archives/wei-rpc-duan-kou-he-websocket-duan-kou-pei-zhi-du-li-de-worker-jin-cheng</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=%E4%B8%BA%20RPC%20%E7%AB%AF%E5%8F%A3%E5%92%8C%20Websocket%20%E7%AB%AF%E5%8F%A3%E9%85%8D%E7%BD%AE%E7%8B%AC%E7%AB%8B%E7%9A%84%20Worker%20%E8%BF%9B%E7%A8%8B&amp;url=/archives/wei-rpc-duan-kou-he-websocket-duan-kou-pei-zhi-du-li-de-worker-jin-cheng" width="1" height="1" alt="" style="opacity:0;">在标准的 Swoole 中，子服务器端口（listen 产生的 Swoole\Server\Port）只能单独设置网络协议参数，无法直接通过 set(['worker_num' =&gt; X]) 来独立设置 Worker 进程数量。也就是说，默认情况下它们必然会共享主服务器的 Worker 进程。 为了]]></description><guid isPermaLink="false">/archives/wei-rpc-duan-kou-he-websocket-duan-kou-pei-zhi-du-li-de-worker-jin-cheng</guid><dc:creator>mdo</dc:creator><category>技术</category><pubDate>Sun, 28 Jun 2026 23:19:02 GMT</pubDate></item><item><title><![CDATA[think-swoole 框架底层的一个“隐藏陷阱”]]></title><link>http://localhost:8090/archives/think-swoole-kuang-jia-di-ceng-de-yi-ge-yin-cang-xian-jing</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=think-swoole%20%E6%A1%86%E6%9E%B6%E5%BA%95%E5%B1%82%E7%9A%84%E4%B8%80%E4%B8%AA%E2%80%9C%E9%9A%90%E8%97%8F%E9%99%B7%E9%98%B1%E2%80%9D&amp;url=/archives/think-swoole-kuang-jia-di-ceng-de-yi-ge-yin-cang-xian-jing" width="1" height="1" alt="" style="opacity:0;">在 think-swoole 的底层实现中，当你调用 $websocket-&gt;to('room')-&gt;push($data) 时，由于 push 方法需要向特定的 FD 直接发送原始数据，框架为了保证主 Worker 进程不被网络 I/O 阻塞，在底层确实会自动把发送任务投递给 Task 进程去异步]]></description><guid isPermaLink="false">/archives/think-swoole-kuang-jia-di-ceng-de-yi-ge-yin-cang-xian-jing</guid><dc:creator>mdo</dc:creator><category>技术</category><pubDate>Fri, 26 Jun 2026 20:55:35 GMT</pubDate></item><item><title><![CDATA[think-swoole 自带的 Room]]></title><link>http://localhost:8090/archives/think-swoole-zi-dai-de-room</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=think-swoole%20%E8%87%AA%E5%B8%A6%E7%9A%84%20Room&amp;url=/archives/think-swoole-zi-dai-de-room" width="1" height="1" alt="" style="opacity:0;">改用 think-swoole 自带的 Room（房间） 机制是解决线上高频广播丢包、阻塞的最正确姿势。 因为 Room 的底层完全基于 Swoole Table（内存共享表） 实现。当你要全员广播时，它不需要走传统的 Task进程，也不需要通过复杂的管道（Pipe）跨进程通信，更不需要你在代码里写]]></description><guid isPermaLink="false">/archives/think-swoole-zi-dai-de-room</guid><dc:creator>mdo</dc:creator><category>技术</category><pubDate>Fri, 26 Jun 2026 20:47:51 GMT</pubDate></item><item><title><![CDATA[Task 队列阻塞与丢弃]]></title><link>http://localhost:8090/archives/task-dui-lie-zu-sai-yu-diu-qi</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=Task%20%E9%98%9F%E5%88%97%E9%98%BB%E5%A1%9E%E4%B8%8E%E4%B8%A2%E5%BC%83&amp;url=/archives/task-dui-lie-zu-sai-yu-diu-qi" width="1" height="1" alt="" style="opacity:0;">在本地测试没问题，但线上在高并发、高频发布消息时出现“丢包”或“收不到信息”的现象，这在 think-swoole / Swoole 开发中非常典型。 虽然你配置了 task_worker_num = 8，但在高频广播消息的场景下，问题通常不是因为 Task 进程不够，而是由于 Swoole 的进程]]></description><guid isPermaLink="false">/archives/task-dui-lie-zu-sai-yu-diu-qi</guid><dc:creator>mdo</dc:creator><category>技术</category><pubDate>Fri, 26 Jun 2026 20:27:27 GMT</pubDate></item><item><title><![CDATA[think-swoole 全局广播]]></title><link>http://localhost:8090/archives/think-swoole-quan-ju-guang-bo</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=think-swoole%20%E5%85%A8%E5%B1%80%E5%B9%BF%E6%92%AD&amp;url=/archives/think-swoole-quan-ju-guang-bo" width="1" height="1" alt="" style="opacity:0;">在 think-swoole 中，全局广播（向当前服务器上所有连接的客户端发送消息）通常有两种实现方式。 第一种是利用 think-swoole 内置的 Websocket 门面（Facade）或事件机制，适合单机部署；第二种是结合 Redis 发布/订阅（Pub/Sub），适合分布式/多机部署。]]></description><guid isPermaLink="false">/archives/think-swoole-quan-ju-guang-bo</guid><dc:creator>mdo</dc:creator><category>技术</category><pubDate>Fri, 26 Jun 2026 10:25:59 GMT</pubDate></item><item><title><![CDATA[利用 Swoole 协程特性]]></title><link>http://localhost:8090/archives/wei-ming-ming-wen-zhang-ydkL2ZXA</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=%E5%88%A9%E7%94%A8%20Swoole%20%E5%8D%8F%E7%A8%8B%E7%89%B9%E6%80%A7&amp;url=/archives/wei-ming-ming-wen-zhang-ydkL2ZXA" width="1" height="1" alt="" style="opacity:0;">默认配置 task_worker_num =&gt; 4 在面对批量推送消息时严重不足。当需要给成百上千个用户推送消息时，循环调用 Swoole 的 push 或投递大量小任务，会瞬间挤爆这 4 个进程，导致后续任务全部排队甚至超时。 请按照以下分级方案进行优化，方案一和方案二可以立即见效： 方案一：立即]]></description><guid isPermaLink="false">/archives/wei-ming-ming-wen-zhang-ydkL2ZXA</guid><dc:creator>mdo</dc:creator><category>技术</category><pubDate>Fri, 26 Jun 2026 04:30:29 GMT</pubDate></item><item><title><![CDATA[Linux | Reqable · API抓包调试 + API测试一站式工具]]></title><link>http://localhost:8090/archives/4e6e8410</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=Linux%20%7C%20Reqable%20%C2%B7%20API%E6%8A%93%E5%8C%85%E8%B0%83%E8%AF%95%20%2B%20API%E6%B5%8B%E8%AF%95%E4%B8%80%E7%AB%99%E5%BC%8F%E5%B7%A5%E5%85%B7&amp;url=/archives/4e6e8410" width="1" height="1" alt="" style="opacity:0;">Reqable是什么? Reqable = Fiddler + Charles + Postman 极简的设计、极高的性能、丰富的功能、桌面手机多端平台。 多协议流量分析 基于经典的MITM中间人代理方案捕获和分析您的应用流量，自适应HTTP/HTTPS/SOCKS4/SOCKS5等多种代理协议，并]]></description><guid isPermaLink="false">/archives/4e6e8410</guid><dc:creator>mdo</dc:creator><category>知识库</category><pubDate>Thu, 25 Jun 2026 06:34:09 GMT</pubDate></item><item><title><![CDATA[Session 文件冲突]]></title><link>http://localhost:8090/archives/wei-ming-ming-wen-zhang-Ux81L2ct</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=Session%20%E6%96%87%E4%BB%B6%E5%86%B2%E7%AA%81&amp;url=/archives/wei-ming-ming-wen-zhang-Ux81L2ct" width="1" height="1" alt="" style="opacity:0;">即便你修正了拼写错误并加上了 session_start()，在 ThinkPHP 6 (TP6) 环境下，$sessionId 和 $sessionId2 依然是不一样的。 不仅如此，由于操作顺序和 TP6 的底层设计，这段代码在实际运行中还会带来非预期的并发副作用。 1. 为什么它们仍然不一样？]]></description><guid isPermaLink="false">/archives/wei-ming-ming-wen-zhang-Ux81L2ct</guid><dc:creator>mdo</dc:creator><category>技术</category><pubDate>Wed, 24 Jun 2026 20:59:07 GMT</pubDate></item><item><title><![CDATA[让 TP6 的 Session 组件重新接管控制权]]></title><link>http://localhost:8090/archives/wei-ming-ming-wen-zhang-GGbuvdi3</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=%E8%AE%A9%20TP6%20%E7%9A%84%20Session%20%E7%BB%84%E4%BB%B6%E9%87%8D%E6%96%B0%E6%8E%A5%E7%AE%A1%E6%8E%A7%E5%88%B6%E6%9D%83&amp;url=/archives/wei-ming-ming-wen-zhang-GGbuvdi3" width="1" height="1" alt="" style="opacity:0;">我们需要让 TP6 的 Session 组件重新接管控制权，同时强行将其配置到 Redis 2号库，并在入口处拦截并纠正 APP 带来的 26 位 Token，最后同步写到 6号库。 请严格按照以下步骤进行调整，无需修改你现有的 session() 读写业务代码： 第一步：恢复 TP6 的 Sess]]></description><guid isPermaLink="false">/archives/wei-ming-ming-wen-zhang-GGbuvdi3</guid><dc:creator>mdo</dc:creator><category>技术</category><pubDate>Wed, 24 Jun 2026 11:11:53 GMT</pubDate></item><item><title><![CDATA[Redis 缓存余额 + 前端异步局部刷新 + 提供手动刷新按钮]]></title><link>http://localhost:8090/archives/redis-huan-cun-yu-e-qian-duan-yi-bu-ju-bu-shua-xin-ti-gong-shou-dong-shua-xin-an-niu</link><description><![CDATA[<img src="http://localhost:8090/plugins/feed/assets/telemetry.gif?title=Redis%20%E7%BC%93%E5%AD%98%E4%BD%99%E9%A2%9D%20%2B%20%E5%89%8D%E7%AB%AF%E5%BC%82%E6%AD%A5%E5%B1%80%E9%83%A8%E5%88%B7%E6%96%B0%20%2B%20%E6%8F%90%E4%BE%9B%E6%89%8B%E5%8A%A8%E5%88%B7%E6%96%B0%E6%8C%89%E9%92%AE&amp;url=/archives/redis-huan-cun-yu-e-qian-duan-yi-bu-ju-bu-shua-xin-ti-gong-shou-dong-shua-xin-an-niu" width="1" height="1" alt="" style="opacity:0;">在 ThinkPHP 6 (TP6) 框架下，针对这种对接多个第三方游戏导致页面加载慢的场景，我们可以使用 Swoole 并发请求（最推荐，大幅提升响应速度）或 Redis 缓存结合异步延迟更新 的方案来落地。 以下是具体的 TP6 实现代码和设计方案： 方案一：Swoole 多协程并发请求（针对必]]></description><guid isPermaLink="false">/archives/redis-huan-cun-yu-e-qian-duan-yi-bu-ju-bu-shua-xin-ti-gong-shou-dong-shua-xin-an-niu</guid><dc:creator>mdo</dc:creator><category>知识库</category><pubDate>Tue, 23 Jun 2026 13:42:49 GMT</pubDate></item></channel></rss>