第三方存储媒介 前面我们介绍了基于 Swoole 的 Process 及 Process\Pool 模块在 PHP 中实现多进程管理,但是多进程模式下进程间是相互隔离的,无法共享数据和变量,即便是通过 global 定义的全局或超全局变量,也只是在所属进程中有效,如果要在 Swoole 实现的多进程间共享数据,需要借助第三方存储媒介实现: 数据库:MySQL.MongoDB 缓存:Redis.Memcached 磁盘文件 但是这也会引入新的问题,多进程同时操作一条记录或一个文件存在并发访问问题,…
# -*- coding: utf-8 -*- """ 多进程数据共享 管道Pipe 逻辑: 2个进程,各自发送数据到管道,对方从管道中取到数据 总结: 1.只适合两个进程 2.recv 会阻塞 3.其中一个进程结束了,管道还在,另外一个进程还能使用 4.可以把管道认为一个队列, 发送数据端,往队列写数据 接收数据端,从队列读数据,队列空了阻塞 单向管道 1个队列,双向管道 2个队列 使用: 1. 创建2个管道的两端的对象 pipe_left_conn,pipe_right_…
# -*- coding: utf-8 -*- """ 多进程数据共享 服务器进程 multiprocessing.Manager 入门使用 逻辑: 20个子线程修改共享数据 总结: 1. Mangeer类似 Value,Array 2. 里面内容比较多,这只是入门用法 3. 还可以操作共享自定义对象,本例是基本数据结构 简单使用: 1. 创建多进程管理的 基本数据结构 list1 = manager.list([1,2,3,4,5]) dict1 = manager.dic…
1. Code # -*- coding: utf-8 -*- """ 多进程 数据共享 共享变量 Value,Array 逻辑: 2个进程,对同一份数据,一个做加法,一个做加法,各做10次 总结: 1.入口代码 必须放在 if __name__ == '__main__' 下,不然报错,不清楚为什么 用法: 1. 创建共享变量 o = Value('i',1000) or o = Array('i',list) 指定不同的类型 2. 启动子进程通过 o.value or o…
swoole_table #在内存中建立一张表,用来存放进程交互过程中使用的数据,与memocache似有异曲同工之妙#用法 <?php$table = new swoole_table(2048);$table->column("id",$table::TYPE_INT,4); #为内存表添加列$table->column("name",$table::TYPE_STRING,32);$table->column("age&quo…
环境:Centos6.4,PHP环境:PHP7 <?php //创建TCP服务器 /** * $host 是swoole需要监听的ip,如果要监听本地,不对外服务,那么就是127.0.0.1;如果我要监听外网,比如我本地是192.168.9.155,我可以监听这个IP,如果本机分配的192.168.9.155的IP,外网在访问IP的时候,就可以相应对应的TCP服务.当然也可以同时监听多个IP */ /** * $port端口号.如果选择1024以下的端口号,需要root权限,如果swoole和p…
环境:Centos6.4,PHP环境:PHP7 <?php //创建UCP服务器(UDP服务器相对于TCP服务器通信更可靠些) /** * $host 是swoole需要监听的ip,如果要监听本地,不对外服务,那么就是127.0.0.1;如果我要监听外网,比如我本地是192.168.9.155,我可以监听这个IP,如果本机分配的192.168.9.155的IP,外网在访问IP的时候,就可以相应对应的TCP服务.当然也可以同时监听多个IP */ /** * $port端口号.如果选择1024以下的…
环境:Centos6.4,PHP环境:PHP7 <?php //创建TCP服务器 /** * $host 是swoole需要监听的ip,如果要监听本地,不对外服务,那么就是127.0.0.1;如果我要监听外网,比如我本地是192.168.9.155,我可以监听这个IP,如果本机分配的192.168.9.155的IP,外网在访问IP的时候,就可以相应对应的TCP服务.当然也可以同时监听多个IP */ /** * $port端口号.如果选择1024以下的端口号,需要root权限,如果swoole和p…
上一篇写到了如何在windows系统上面利用docker快速搭建swoole开发环境,接下来体验下swoole的使用 使用swoole实现tcp服务 <?php $serv = new Swoole\Server("0.0.0.0", 9501); $serv->on('connect', function ($serv, $fd){ echo "客户端 ".$fd."连接成功 \n"; }); $serv->on('recei…
环境:Centos6.4,PHP环境:PHP7 服务端代码 <?php //创建websocket服务器 $host = '0.0.0.0'; $port = ; $ws = new swoole_websocket_server($host, $port); // $ws->on('open', function($ws, $request){ //$ws就是我们的服务器,$request就是客户端的信息 var_dump($request); $ws->push($request-&…