
swoole
TimChen666
持续学习的渣渣
展开
-
Swoole基础——09 异步Redis
前期准备安装redis服务安装hireids重新编译安装swoole1. 安装redis一、下载、解压curl -O http://download.redis.io/releases/redis-4.0.9.tar.gz tar -zxvf redis-4.0.9.tar.gzcd redis-4.0.9二、安装make三、开启cd s...转载 2019-02-14 16:52:21 · 220 阅读 · 0 评论 -
Swoole基础——07 AsyncIO
异步读取文件1. swoole_async_readfile// 函数风格swoole_async_readfile(string $filename, mixed $callback);// 命名空间风格Swoole\Async::readFile(string $filename, mixed $callback);返回结果文件不存在会返回false,成功打开文件...转载 2019-02-14 00:06:29 · 142 阅读 · 0 评论 -
Swoole基础——06 (异步)定时器、延时器
概述linux也有定时器crontab,但是它最小只能精确到分。而swoole内置的定时器,可以做到毫秒级别。使用1. 设置一个定时器swoole_timer_tick(int $msec, callable $callback [, mixed $user_param]);回调函数定时器触发的回调函数接受2个参数。function callbackFunction(i...原创 2019-02-13 22:41:10 · 758 阅读 · 0 评论 -
Swoole基础——05 Task(异步任务)
使用场景执行耗时的操作(发送邮件、广播等)。使用要点设置task_worker_num(线程)task() 投递异步任务onTask事件onFinish事件1. 设置task_worker_num这里以tcp_server为例,示范如何设置。$serv = new swoole_server("127.0.0.1", 9501);//设置异步任务的工作进程数量$s...原创 2019-02-13 21:43:07 · 292 阅读 · 0 评论 -
Swoole基础——04 Websocket
定义Websocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信——允许服务器主动发送信息给客户端。为什么需要websocket?1)HTTP的通信,只能由客户端发起;2)websock有以下特点:建立在TCP协议上性能开销小,通信高效客户端可以与任意服务器通信协议标识符ws wss持久化网络通信协议(长链接)使用websocketWebSo...原创 2019-02-13 20:49:43 · 288 阅读 · 0 评论 -
Swoole基础——03 HTTP
一、创建HTTP服务器$http = new swoole_http_server(string $host, int $port = 0);二、监听request事件$http->on('request', function ($request, $response) { ...});$request: 请求对象我们可以从这个对象上获取来自客户端的信息,包括ip、...原创 2019-02-13 17:46:44 · 183 阅读 · 0 评论 -
Swoole基础——02 UDP
一、创建server对象$serv = new swoole_server("127.0.0.1", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_UDP);二、接收客户端数据UDP服务器与TCP服务器不同,UDP没有连接的概念。启动Server后,客户端无需Connect,直接可以向Server监听的9502端口发送数据包。对应的事件为onPacket。...转载 2019-02-13 16:06:47 · 140 阅读 · 0 评论 -
Swoole基础——01 TCP
概述swoole里面的tcp内容分为Server(服务器)和Client(客户端),和传统的http基本一致。其中Client分为同步和异步,异步只适用于cli环境下执行。一、创建TCP服务器( 1 ) 创建tcp_server对象$serv = new swoole_server(string $host, int $port = 0, int $mode = SWOOLE_...原创 2019-02-13 15:50:02 · 187 阅读 · 0 评论 -
Swoole进阶——04 进程(消息队列通信)
使用步骤1. 创建子进程对象// 普通形式$process = new swoole_process('callback_function', false, false);// oop形式swoole_process::__construct(callable $function, $redirect_stdin_stdout = false, $create_pipe = fal...转载 2019-02-14 22:24:46 · 751 阅读 · 0 评论 -
Swoole进阶——03 协程
介绍再次理解异步传统的PHP采用同步阻塞的形式,譬如一个程序需要获取redis和mysql里面的数据,那么执行过程时间是redis + mysql。如果采用异步的形式,那么时间将是max(redis, mysql)。协程的作用应用层可使用完全同步的编程方式,底层自动实现异步IO。也就是说,你写的时候是同步的形式,但是程序执行的时候是异步的。协程Redis基于Server、H...转载 2019-02-14 21:08:07 · 530 阅读 · 0 评论 -
Swoole进阶——02 内存之Table
介绍swoole_table一个基于共享内存和锁实现的超高性能,并发数据结构。用于解决多进程/多线程数据共享和同步加锁问题。Swoole的Memory模块其实都是用于进程之间的通信,不同进程可以通过Memory模块共享数据。使用步骤1. 创建内存表对象swoole_table->__construct(int $size, float $conflict_proportio...转载 2019-02-14 20:26:47 · 1043 阅读 · 0 评论 -
Swoole进阶——01 进程(管道通信)
定义进程就是正在运行的程序的一个实例。例如,我们在某个终端去执行一个php脚本,这个时候就可以认为是开启了一个进程。基本使用1. 创建一个子进程对象// 普通形式$process = new swoole_process('callback_function', true);// oop形式swoole_process::__construct(callable $func...转载 2019-02-14 17:47:42 · 745 阅读 · 0 评论 -
Swoole基础——08 异步Mysql
使用场景譬如一个新闻站,点击进去看一条新闻,它的流程是:详情页--> 阅读数+1 --> 页面呈现。这里面增加阅读数的操作是没必要同步去进行的,因为人们最在乎的页面呈现。类似于这种跟主业务逻辑没太大关系的数据操作,可以使用异步mysql去进行操作。使用异步Mysql1. 创建swoole_mysql对象,配置数据库// 1.创建数据库对象$this->dbs...转载 2019-02-14 15:50:25 · 141 阅读 · 0 评论