通过swoole理解TCP粘包

什么是粘包 TCP是字节流协议,数据传输像流水一样。数据发送者会存在一个发送缓冲区,每次可能会将多个数据包一次性发送出去,也可能是一个数据包拆分多次发出去;如果协议没有约定好分隔符或者不明确数据包大小边界,接收者就无法获取并正确解析数据包了,这就是常说的 粘包,下面结合swoole_server和自定义协议来详细说明。
什么是粘包 TCP是字节流协议,数据传输像流水一样。数据发送者会存在一个发送缓冲区,每次可能会将多个数据包一次性发送出去,也可能是一个数据包拆分多次发出去;如果协议没有约定好分隔符或者不明确数据包大小边界,接收者就无法获取并正确解析数据包了,这就是常说的 粘包,下面结合swoole_server和自定义协议来详细说明。
Swoole —— 重新定义PHP 作为一个使用C语言底层实现的PHP扩展,弥补了PHP在多线程、常驻内存相关领域的短处,为广大phper打开了眼界。 swoole 的进程之间有两种通信方式,一种是消息队列(queue),另一种是管道(pipe),对swoole_process 的研究在swoole中显得尤为重要。
在开发过程中,我们一般都是使用 ssh 登录linux,在命令行下直接使用 php-cli 模式运行 swoole,一旦退出ssh 或者使用 ctrl+c,终端会收到 HUP(hangup)信号从而关闭其所有子进程 ,swoole 进程会自动关闭。 那有问题来了,没有靠谱的、可以让脚本在后台长期运行呢,答案是有的 :)