Swoole
huizhang.
EasySwoole开发组成员
展开
-
EasySwoole命令管理思维导图
原创 2021-03-28 22:57:55 · 125 阅读 · 0 评论 -
基于文本协议实现memcache协程客户端(swoole)
简介在开发easyswoole组件时发现,MemcacheQ(微博自研消息队列)与memcache二进制协议不完全兼容,所以只能使用文本协议重新开发一个memcache协程客户端组件安装composer require huizhang/memcache使用方式<?phpinclude './vendor/autoload.php';use Huizhang\Memcache\Memcache;use Huizhang\Memcache\Config;go(functio原创 2021-02-21 23:13:51 · 189 阅读 · 0 评论 -
Grafana自定义alert的实现过程
前言grafana自带的alert功能是有限的,比如只能对某个query 配置alert,而不能对具体分类,当然我们可以通过代码来实现定制化的alert需求, 因为要用到定时监控grafana的数据变化情况,所以使用easyswoole的定时器功能来做讲解。生成keykey为调用grafana http api 所需的验证信息分析要请求的api和传递的参数当然你可以去grafana官方文档去翻一番http api 章节Install easyswoole的http-clie原创 2021-02-07 01:43:57 · 2437 阅读 · 2 评论 -
基于 EasySwoole 实现通用队列
EasySwoole 通用队列组件支持消费数据先落盘防止异常丢失数据支持队列数据消费日志保留支持基于Redis延迟队列支持基于Redis的队列支持MemcacheQ后续会支持更多消息中间件的消费驱动安装composer require huizhang/universal-queue定义消费者<?phpnamespace App\DelayQueue;use Huizhang\UniversalQueue\Core\ConsumerAbstract;class原创 2021-01-24 22:32:47 · 1269 阅读 · 0 评论 -
swoole异步群发邮件
服务器代码先用cli方式启动服务器文件 $serv = new swoole_server("127.0.0.1", 9501);//设置异步任务的工作进程数量$serv->set(array('task_worker_num' => 4));//监听数据接收事件$serv->on('receive', function($serv, $fd, $from_id, $data原创 2018-01-30 13:59:26 · 1595 阅读 · 0 评论 -
swoole fatal error: 'openssl/ssl.h' file not found
问题分析$ssl需要依赖openssl,必须在编译swoole时启用–enable-openssl 1.确认是否安装了 openssl 如果没有安装,先安装,如果已经安装,则看第二步 2. 确认 openssl 库是否在标准位置中 既然出现了错误当然就是没有在标准的位置,两种解决方法路径映射 这个我的mac进去恢复模式后有问题,你们自行研究 ...原创 2018-02-12 21:51:40 · 9146 阅读 · 0 评论 -
php版本扩展比较
phpversion();//获取php版本if (version_compare(phpversion(), '7.1', ')) {//php版本比较 die("PHP version\e[31m must >= 7.1\e[0m\n"); } if (version_compare(phpversion('swoole'), '1.9.5', ')) {/原创 2018-02-07 16:14:19 · 152 阅读 · 0 评论 -
阿里云ping不通端口
0.0.0.0的意思是任意地址。表示本机的时候,0.0.0.0代表本机所有可用地址;当外部地址用的时候,表示所有网络地址。 aaaa : bb 用来表示指定地址aaaa的具体端口bb, 192.168.1.1:8080 表示192.168.1.1的8080端口, localhost:777 表示 localhost(其实就是本机)的777端口(只能通过127.0.0.1/l...原创 2018-02-14 13:39:51 · 2024 阅读 · 0 评论 -
阿里云服务器端口不通的解决办法
首先关闭防火墙,如果防火墙是firewalld则根据以下配置1 systemctl stop firewalld2 如果成功访问说明是防火墙的原因。 检查所有开发端口3 firewall-cmd –list-all4 开放端口3306 firewall-cmd –zone=public –add-port=3306/tcp –perman...原创 2018-02-14 14:26:10 · 6642 阅读 · 0 评论 -
PHP进行tcp连接
原生PHP的写法。$host = '服务端IP'; $port = 端口号; $timeout = 5; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if (socket_connect($socket, $host, $port) === false) { // 创建连接 ...转载 2018-04-09 23:32:35 · 7116 阅读 · 0 评论 -
各种锁机制
简介 要正确理解各类线程安全手段,得有操作系统和计算机原理的基本功,才理解原理。自旋锁 如果进线程无法取得锁,进线程不会立刻放弃CPU时间片,而是一直申请CPU时间片轮询自旋锁,直到获取为止,一般应用于加锁时间很短(1ms左右或更低)的场景。互斥锁 无法获取琐时,进线程立刻放弃剩余的时间片并进入阻塞(或者说挂起)状态,同时保存寄存器和程序计数器的内容(保原创 2018-02-04 20:34:52 · 293 阅读 · 0 评论 -
pcntl_fork执行过程
基础知识进程(process)的概念 一个进程,主要包含三个元素: 1. 一个可以执行的程序; 2. 和该进程相关联的全部数据(包括变量,内存空间,缓冲区等等); 3. 程序的执行上下文(execution context); 可以这样认为 不妨简单理解为,一个进程表示的就是一个可执行程序的一次执行过程中的一个状态。操作系统对进程的管原创 2018-02-04 20:12:29 · 233 阅读 · 0 评论 -
swoole_server->addProcess
简介 添加一个用户自定义的工作进程。此函数通常用于创建一个特殊的工作进程,用于监控、上报或者其他特殊的任务。https://wiki.swoole.com/wiki/page/390.htmlServerphpclass Server{ private $serv; private $process; private $testProces原创 2018-01-31 21:05:28 · 629 阅读 · 0 评论 -
swoole_server->defer
简介 延后执行一个PHP函数。Swoole底层会在EventLoop循环完成后执行此函数。此函数的目的是为了让一些PHP代码延后执行,程序优先处理IO事件。底层不保证defer的函数会立即执行,如果是系统关键逻辑,需要尽快执行,请使用after定时器实现。https://wiki.swoole.com/wiki/page/516.html使用实例function quer原创 2018-02-01 00:02:08 · 650 阅读 · 0 评论 -
PHP同步爬虫
主文件/** * 同步爬虫 */require_once 'Crawler.php';$start = microtime(true);//unix微妙数$url = 'http://www.swoole.com/';$ins = new Crawler($url);$ins->visitOneDegree();$timeUsed = microtime(true)原创 2018-01-24 23:02:26 · 498 阅读 · 0 评论 -
swoole_server->getClientList
简介 用来遍历当前Server所有的客户端连接,Server::getClientList方法是基于共享内存的,不存在IOWait,遍历的速度很快。另外getClientList会返回所有TCP连接,而不仅仅是当前Worker进程的TCP连接。https://wiki.swoole.com/wiki/page/p-connection_list.html实例代码Serve原创 2018-02-01 14:44:40 · 504 阅读 · 0 评论 -
php+swoole实现群聊
简介http://www.ruanyifeng.com/blog/2017/05/websocket.html服务器端代码$server = new swoole_websocket_server("127.0.0.1", 9501);$server->on('open', function (swoole_websocket_server $server, $reque原创 2018-01-27 15:25:59 · 1145 阅读 · 1 评论 -
swoole_server->task
简介 投递一个异步任务到task_worker池中。此函数是非阻塞的,执行完毕会立即返回。Worker进程可以继续处理新的请求。使用Task功能,必须先设置 task_worker_num,并且必须设置Server的onTask和onFinish事件回调函数。https://wiki.swoole.com/wiki/page/134.html代码Servercl原创 2018-02-03 17:28:04 · 468 阅读 · 0 评论 -
Client异步模式
简介 connect会立即返回true。但实际上连接并未建立。所以不能在connect后使用send。通过isConnected()判断也是false。当连接成功后,系统会自动回调onConnect。这时才可以使用send向服务器发送数据。 https://wiki.swoole.com/wiki/page/30.html代码Serverclass Serve原创 2018-02-03 21:52:00 · 681 阅读 · 0 评论 -
在子进程中创建swoole_server
代码 $process = new swoole_process('callback_function', true);//创建一个子进程$pid = $process->start();//回调函数function callback_function(swoole_process $worker){ //执行一个外部程序,此函数是exec系统调用的封装。执行swool原创 2018-02-04 14:56:56 · 206 阅读 · 0 评论 -
父子进程通讯
$process = new swoole_process(function (swoole_process $process) {//创建一个子进程 $process->write('Hello');//把数据写入管道}, true);$process->start();usleep(100);echo $process->read(); //从管道读取并且输出原创 2018-02-04 15:17:54 · 145 阅读 · 0 评论 -
swoole_server->addListener
简介 Swoole提供了swoole_server::addListener来增加监听的端口。业务代码中可以通过调用swoole_server::connection_info来获取某个连接来自于哪个端口。https://wiki.swoole.com/wiki/page/16.html示例$serv->addlistener("127.0.0.1", 9502, S原创 2018-01-31 16:36:25 · 513 阅读 · 0 评论