玩转网络通信引擎
<h2>启动swoole服务,已经好的tcp.php文件</h2>
<ul>
<li>
<p>进入到tcp.php文件所有目录,执行tcp.php文件,在shell连接终端打开一个“窗口1”,启动一个swoole服务</p>
<pre><code class="language-shell">php tcp.php </code></pre>
</li>
<li>
<p>使用客户端进行连接,再使用shell连接终端打开一个“窗口2"</p>
<pre><code class="language-shell">telnet 127.0.0.1 9501</code></pre>
<ul>
<li>回到“窗口1”进行查看,会显示:</li>
</ul>
<blockquote>
<p>Client: 6 - 1-Connect.</p>
<p>Client: 6 对应 tcp.php 到的代码为</p>
<p>echo "Client: {$reactor_id} - {$fd}-Connect.\n";</p>
</blockquote>
<ul>
<li>再打开一个“窗口3”,再次回到“窗口2”中查看,会显示:</li>
</ul>
<blockquote>
<p>Client: 6 - 1-Connect.</p>
<p>Client: 7 - 2-Connect.</p>
</blockquote>
</li>
<li>
<p>如果执行tcp.php文件抛异常,请查看端口是否有关闭,未关闭,杀死这个进程即可关闭这个端口号</p>
<pre><code class="language-shell">netstat -anp | grep 9501
# kill 进程号
php tcp.php</code></pre>
</li>
</ul>
<h2>查看进程号</h2>
<pre><code class="language-shell">ps aft | grep tcp.php
# worker_num 设置数字几,tcp.php的几进程就是几个
# 杀死tcp.php进程,使用ctrl+C快捷键</code></pre>
<h2>websocket</h2>
<ul>
<li>websocket协议是基于TCP的一种新的网络协议。</li>
<li>它实现了浏览器与服务器全双工(full-duplex)通信,允许服务器主动发送信息给客服端。</li>
</ul>
<h2>为什么需要使用websocket</h2>
<ul>
<li>http的通信只能由客户端发起</li>
</ul>
<h2>websocket特点</h2>
<ul>
<li>建立在TCP协议之上</li>
<li>性能开销小,通信高效</li>
<li>客户端可以与任意服务器通信</li>
<li>协议标识符 ws wss</li>
<li>持久化网络通信协议</li>
</ul>
<h2>Swoole task任务使用</h2>
<ul>
<li>使用场景
<ul>
<li>执行耗时的操作(发送邮件,广播等)</li>
</ul></li>
<li>如何使用
<ul>
<li>onTask, onFinish, 设置tast_worker_num</li>
</ul></li>
</ul>