主页
Swoole(十六)实现一个长连接的网络聊天室
这次我们首先一个类似IM的网络聊天室,服务器端使用websocket,客户端使用JS连接。 1.Websocket服务器首先将服务器端代码写好1234567891011121314151617181920212223242526272829303132333435363738<?php//创建Websocket服务器$ws = new swoole_websocket_server(&quo
Swoole(十五)异步文件写入
Swoole增加了异步文件读写,异步DNS,异步Http/WebSocket客户端等特性。开发纯异步非阻塞IO的程序时,不能使用PHP自带的网络客户端,如curl、file_get_contents、stream、sockets、mysql、redis。 1.(小文件)异步写文件:swoole_async_writefile提供了两种风格函数风格:swoole_async_writefile($
Swoole(十四)异步文件读取
Swoole增加了异步文件读写,异步DNS,异步Http/WebSocket客户端等特性。开发纯异步非阻塞IO的程序时,不能使用PHP自带的网络客户端,如curl、file_get_contents、stream、sockets、mysql、redis。 1.(小文件)异步读取文件内容:swoole_async_readfile提供了两种风格函数风格:swoole_async_readfile(
Swoole(十三)DNS查询
Swoole有(异步)DNS查询功能(我也不知道为什么集成了) 1.(异步)将域名解析为IP地址:swoole_async_dns_lookup函数原型:swoole_async_dns_lookup($domainName,callback function($host,$ip){});$domainName:传入的域名DNS查询完成:自动回调指定的callback函数。DNS查询失败:比如域
Swoole(十二)锁机制
Swoole针对内存的其他提供了一系列的锁机制swoole_lock类支持5种锁的类型: 文件锁 SWOOLE_FILELOCK 读写锁 SWOOLE_RWLOCK 信号量 SWOOLE_SEM 互斥锁 SWOOLE_MUTEX 自旋锁 SWOOLE_SPINLOCKTips:之前学习单例模式算法的时候,为了防止两个进程创建两个单例,就需要使用锁机制,C++/C#有private static
Swoole(十一)进程信号触发器
Swoole具备进程管理模块,用来代替PHP的pcntl拓展。1.设置异步信号监听:swoole_process::signal函数原型:bool swoole_process::signal(int $signo, callable $callback);此方法基于signalfd和eventloop是异步IO,不能用于同步程序中同步阻塞的程序可以使用pcntl扩展提供的pcntl_signal
Swoole(十)进程队列通信
Swoole具备进程管理模块,用来代替PHP的pcntl拓展。 1.投递数据到消息队列:swoole_process->push函数原型:bool swoole_process->push(string $data);$data:投递的数据,长度受限与操作系统内核参数的限制。默认为8192,最大不超过65536默认模式下(阻塞模式):队列已满,push方法会阻塞等待非阻塞模式下:队列
Swoole(九)同步/异步进程
Swoole具备进程管理模块,用来代替PHP的pcntl拓展。Process进程是系统中十分昂贵的资源,创建进程消耗很大,可以使用vmstat指令查看系统每秒进程切换次数 1.PHP自带pcntl拓展存在很多不足 pcntl没有提供进程间通信的功能 pcntl不支持重定向标准输入和输出 pcntl只提供了fork这样原始的接口,容易使用错误 swoole_process提供了比pcntl更强大的
Swoole(八)同步TCP客户端
创建一个TCP的同步客户端,可用于连接我们之前的实例TCP服务器 1.函数讲解1.建立TCP客户端对象:$client = new swoole_client(SWOOLE_SOCK_TCP);2.连接到服务器使用客户端对象的connect方法,参数分别为服务器$ip、服务器端口号$port和连接超时时间$time1$client->connect('127.0.0.1&apos