Swoole\Pool进程池实现Redis持久连接

作者: 温新

分类: 【高性能PHP】

阅读: 2414

时间: 2021-04-21 16:16:02

进程池,基于Swoole\Server的Manager管理进程模块实现。可管理多个工作进程,相比 Process 实现多进程,Process\Pool 更加简单,封装层次更高,开发者无需编写过多代码即可实现进程管理功能,配合 Co\Server 可以创建纯协程风格的,能利用多核 CPU 的服务端程序。

Swoole进程池实现redis数据读取

如下案例,通过WorkerStart启动Redis进程池,并持久读取Redis列表数据;当WorkerStop断开所有连接时回收所有子进程。

第一步:编码代码

文件:d10.php

<span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(152, 26, 26)"><?</span><span style="box-sizing: border-box;color: rgb(0, 0, 0)">php</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(119, 0, 136)">use</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">Swoole\Process</span>;</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(119, 0, 136)">use</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">Swoole\Coroutine</span>;</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(170, 85, 0)">// 指定5个工作进程</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 85, 170)">$pool</span> <span style="box-sizing: border-box;color: rgb(152, 26, 26)">=</span> <span style="box-sizing: border-box;color: rgb(119, 0, 136)">new</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">Process\Pool</span>(<span style="box-sizing: border-box;color: rgb(17, 102, 68)">5</span>);</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(170, 85, 0)">// 设置启用协程</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 85, 170)">$pool</span><span style="box-sizing: border-box;color: rgb(152, 26, 26)">-></span><span style="box-sizing: border-box;color: rgb(0, 0, 0)">set</span>([<span style="box-sizing: border-box;color: rgb(170, 17, 17)">'enable_coroutine'</span> <span style="box-sizing: border-box;color: rgb(152, 26, 26)">=></span> <span style="box-sizing: border-box;color: rgb(34, 17, 153)">true</span>]);</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(170, 85, 0)">/**</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(170, 85, 0)">* onWorkerStart 子进程启动</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(170, 85, 0)">* @param \Swoole\Process\Pool $pool Pool对象</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(170, 85, 0)">* @param int $workerId   WorkerId当前工作进程的编号,底层会对子进程进行标号</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(170, 85, 0)">**/</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 85, 170)">$pool</span><span style="box-sizing: border-box;color: rgb(152, 26, 26)">-></span><span style="box-sizing: border-box;color: rgb(0, 0, 0)">on</span>(<span style="box-sizing: border-box;color: rgb(170, 17, 17)">"WorkerStart"</span>, <span style="box-sizing: border-box;color: rgb(119, 0, 136)">function</span> (<span style="box-sizing: border-box;color: rgb(0, 0, 0)">Process\Pool</span> <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$pool</span>, <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$workerId</span>) {</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="box-sizing: border-box;color: rgb(170, 85, 0)">// 输出当前工作进程</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(119, 0, 136)">echo</span> <span style="box-sizing: border-box;color: rgb(170, 17, 17)">"Worker #</span>{<span style="box-sizing: border-box;color: rgb(0, 85, 170)">$workerId</span>} <span style="box-sizing: border-box;color: rgb(170, 17, 17)">is started\n"</span>;</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(170, 85, 0)">// 实例化化连接redis</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$redis</span> <span style="box-sizing: border-box;color: rgb(152, 26, 26)">=</span> <span style="box-sizing: border-box;color: rgb(119, 0, 136)">new</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">Redis</span>();</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$redis</span><span style="box-sizing: border-box;color: rgb(152, 26, 26)">-></span><span style="box-sizing: border-box;color: rgb(0, 0, 0)">pconnect</span>(<span style="box-sizing: border-box;color: rgb(170, 17, 17)">'127.0.0.1'</span>, <span style="box-sizing: border-box;color: rgb(17, 102, 68)">6379</span>);</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(170, 85, 0)">// 指定redis键</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$key</span> <span style="box-sizing: border-box;color: rgb(152, 26, 26)">=</span> <span style="box-sizing: border-box;color: rgb(170, 17, 17)">"key1"</span>;</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(170, 85, 0)">// 循环读取列表数据</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(119, 0, 136)">while</span> (<span style="box-sizing: border-box;color: rgb(34, 17, 153)">true</span>) {</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">     <span style="box-sizing: border-box;color: rgb(170, 85, 0)">// 弹出列表最后一个元素</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$msgs</span> <span style="box-sizing: border-box;color: rgb(152, 26, 26)">=</span> <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$redis</span><span style="box-sizing: border-box;color: rgb(152, 26, 26)">-></span><span style="box-sizing: border-box;color: rgb(0, 0, 0)">brpop</span>(<span style="box-sizing: border-box;color: rgb(0, 85, 170)">$key</span>, <span style="box-sizing: border-box;color: rgb(17, 102, 68)">2</span>);</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(170, 85, 0)">// 元素值为空则跳过</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(119, 0, 136)">if</span> ( <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$msgs</span> <span style="box-sizing: border-box;color: rgb(152, 26, 26)">==</span> <span style="box-sizing: border-box;color: rgb(34, 17, 153)">null</span>) {</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">            <span style="box-sizing: border-box;color: rgb(119, 0, 136)">continue</span>;</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">        }</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(170, 85, 0)">// 打印获取的值</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(51, 0, 170)">var_dump</span>(<span style="box-sizing: border-box;color: rgb(0, 85, 170)">$msgs</span>);</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(119, 0, 136)">echo</span> <span style="box-sizing: border-box;color: rgb(170, 17, 17)">"Processed by Worker#</span>{<span style="box-sizing: border-box;color: rgb(0, 85, 170)">$workerId</span>}<span style="box-sizing: border-box;color: rgb(170, 17, 17)">\n"</span>;</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    }</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">});</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(170, 85, 0)">// 子进程结束</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 85, 170)">$pool</span><span style="box-sizing: border-box;color: rgb(152, 26, 26)">-></span><span style="box-sizing: border-box;color: rgb(0, 0, 0)">on</span>(<span style="box-sizing: border-box;color: rgb(170, 17, 17)">"WorkerStop"</span>, <span style="box-sizing: border-box;color: rgb(119, 0, 136)">function</span> (<span style="box-sizing: border-box;color: rgb(0, 85, 170)">$pool</span>, <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$workerId</span>) {</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(119, 0, 136)">echo</span> <span style="box-sizing: border-box;color: rgb(170, 17, 17)">"Worker#</span>{<span style="box-sizing: border-box;color: rgb(0, 85, 170)">$workerId</span>} <span style="box-sizing: border-box;color: rgb(170, 17, 17)">is stopped\n"</span>;</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">});</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(170, 85, 0)">// 启动工作进程</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 85, 170)">$pool</span><span style="box-sizing: border-box;color: rgb(152, 26, 26)">-></span><span style="box-sizing: border-box;color: rgb(0, 0, 0)">start</span>();</span>

第二步:启动Redis服务并通过客户端写列表数据

该案例需要php安装redis扩展

<span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(170, 85, 0)"># 通过redis客户端连接</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">.<span style="box-sizing: border-box;color: rgb(152, 26, 26)">/</span><span style="box-sizing: border-box;color: rgb(0, 0, 0)">redis</span><span style="box-sizing: border-box;color: rgb(152, 26, 26)">-</span><span style="box-sizing: border-box;color: rgb(0, 0, 0)">cli</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    </span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(17, 102, 68)">127.0</span>.<span style="box-sizing: border-box;color: rgb(17, 102, 68)">0.1</span>:<span style="box-sizing: border-box;color: rgb(17, 102, 68)">6379</span><span style="box-sizing: border-box;color: rgb(152, 26, 26)">></span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">lpush</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">key1</span> <span style="box-sizing: border-box;color: rgb(170, 17, 17)">'world'</span></span>

第三步:运行d10.php

php d10.php

第四步:查看进程

<span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(51, 0, 170)">ps</span> aux | <span style="box-sizing: border-box;color: rgb(51, 0, 170)">grep</span> php</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">root        <span style="box-sizing: border-box;color: rgb(17, 102, 68)">938</span>  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>.0  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">1</span>.2 <span style="box-sizing: border-box;color: rgb(17, 102, 68)">129164</span> <span style="box-sizing: border-box;color: rgb(17, 102, 68)">12412</span> ?        Ss   Apr21   <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>:00 php-fpm: master process (/usr/local/php-8.0.1/etc/php-fpm.conf)</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">www         <span style="box-sizing: border-box;color: rgb(17, 102, 68)">951</span>  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>.0  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>.6 <span style="box-sizing: border-box;color: rgb(17, 102, 68)">129164</span>  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">6636</span> ?        S    Apr21   <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>:00 php-fpm: pool www</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">www         <span style="box-sizing: border-box;color: rgb(17, 102, 68)">952</span>  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>.0  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>.6 <span style="box-sizing: border-box;color: rgb(17, 102, 68)">129164</span>  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">6640</span> ?        S    Apr21   <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>:00 php-fpm: pool www</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">root      <span style="box-sizing: border-box;color: rgb(17, 102, 68)">12327</span>  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>.0  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">1</span>.2 <span style="box-sizing: border-box;color: rgb(17, 102, 68)">126992</span> <span style="box-sizing: border-box;color: rgb(17, 102, 68)">12800</span> pts/2    S<span style="box-sizing: border-box;color: rgb(152, 26, 26)">+</span>   <span style="box-sizing: border-box;color: rgb(17, 102, 68)">00</span>:02   <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>:00 php d10.php</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">root      <span style="box-sizing: border-box;color: rgb(17, 102, 68)">12328</span>  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>.0  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>.7 <span style="box-sizing: border-box;color: rgb(17, 102, 68)">131096</span>  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">7444</span> pts/2    S<span style="box-sizing: border-box;color: rgb(152, 26, 26)">+</span>   <span style="box-sizing: border-box;color: rgb(17, 102, 68)">00</span>:02   <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>:00 php d10.php</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">root      <span style="box-sizing: border-box;color: rgb(17, 102, 68)">12329</span>  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>.0  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>.7 <span style="box-sizing: border-box;color: rgb(17, 102, 68)">131096</span>  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">7448</span> pts/2    S<span style="box-sizing: border-box;color: rgb(152, 26, 26)">+</span>   <span style="box-sizing: border-box;color: rgb(17, 102, 68)">00</span>:02   <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>:00 php d10.php</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">root      <span style="box-sizing: border-box;color: rgb(17, 102, 68)">12330</span>  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>.0  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>.7 <span style="box-sizing: border-box;color: rgb(17, 102, 68)">131096</span>  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">7448</span> pts/2    S<span style="box-sizing: border-box;color: rgb(152, 26, 26)">+</span>   <span style="box-sizing: border-box;color: rgb(17, 102, 68)">00</span>:02   <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>:00 php d10.php</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">root      <span style="box-sizing: border-box;color: rgb(17, 102, 68)">12331</span>  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>.0  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>.7 <span style="box-sizing: border-box;color: rgb(17, 102, 68)">131096</span>  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">7448</span> pts/2    S<span style="box-sizing: border-box;color: rgb(152, 26, 26)">+</span>   <span style="box-sizing: border-box;color: rgb(17, 102, 68)">00</span>:02   <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>:00 php d10.php</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">root      <span style="box-sizing: border-box;color: rgb(17, 102, 68)">12332</span>  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>.0  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>.7 <span style="box-sizing: border-box;color: rgb(17, 102, 68)">131096</span>  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">7448</span> pts/2    S<span style="box-sizing: border-box;color: rgb(152, 26, 26)">+</span>   <span style="box-sizing: border-box;color: rgb(17, 102, 68)">00</span>:02   <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>:00 php d10.php</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">root      <span style="box-sizing: border-box;color: rgb(17, 102, 68)">12355</span>  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>.0  <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>.0 <span style="box-sizing: border-box;color: rgb(17, 102, 68)">112812</span>   <span style="box-sizing: border-box;color: rgb(17, 102, 68)">976</span> pts/3    R<span style="box-sizing: border-box;color: rgb(152, 26, 26)">+</span>   <span style="box-sizing: border-box;color: rgb(17, 102, 68)">00</span>:09   <span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>:00 <span style="box-sizing: border-box;color: rgb(51, 0, 170)">grep</span> <span style="box-sizing: border-box;color: rgb(0, 0, 204)">--color</span><span style="box-sizing: border-box;color: rgb(152, 26, 26)">=</span>auto php</span>

第五步:输出结果

<span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 0, 0)">php</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">d10</span>.<span style="box-sizing: border-box;color: rgb(0, 0, 0)">php</span> </span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    </span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 0, 0)">Worker</span> <span style="box-sizing: border-box;color: rgb(170, 85, 0)">#1 is started</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 0, 0)">Worker</span> <span style="box-sizing: border-box;color: rgb(170, 85, 0)">#2 is started</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 0, 0)">Worker</span> <span style="box-sizing: border-box;color: rgb(170, 85, 0)">#3 is started</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 0, 0)">Worker</span> <span style="box-sizing: border-box;color: rgb(170, 85, 0)">#4 is started</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 0, 0)">Worker</span> <span style="box-sizing: border-box;color: rgb(170, 85, 0)">#0 is started</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(119, 0, 136)">array</span>(<span style="box-sizing: border-box;color: rgb(17, 102, 68)">2</span>) {</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">  [<span style="box-sizing: border-box;color: rgb(17, 102, 68)">0</span>]<span style="box-sizing: border-box;color: rgb(152, 26, 26)">=></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">  <span style="box-sizing: border-box;color: rgb(0, 0, 0)">string</span>(<span style="box-sizing: border-box;color: rgb(17, 102, 68)">4</span>) <span style="box-sizing: border-box;color: rgb(170, 17, 17)">"key1"</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">  [<span style="box-sizing: border-box;color: rgb(17, 102, 68)">1</span>]<span style="box-sizing: border-box;color: rgb(152, 26, 26)">=></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">  <span style="box-sizing: border-box;color: rgb(0, 0, 0)">string</span>(<span style="box-sizing: border-box;color: rgb(17, 102, 68)">5</span>) <span style="box-sizing: border-box;color: rgb(170, 17, 17)">"world"</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">}</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 0, 0)">Processed</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">by</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">Worker</span><span style="box-sizing: border-box;color: rgb(170, 85, 0)">#1</span></span>

d10.php文件运行后会一直处于阻塞状态而一直读取redis列表数据,一旦Redis列表中输出,则立刻被弹出并打印在屏幕中。

请登录后再评论