在某些情况下,如系统负载过大swoole无法申请到内存而挂掉、swoole底层发生段错误、Server占用内存过大被内核Kill,或者被某些程序误杀。那swoole-server将无法提供服务,导致业务中断,公司收入出现损失。 有一个非常有效并且在BAT等大型公司常用的方案是crontab重启监控。 ...
分类:
其他好文 时间:
2020-07-24 16:24:20
阅读次数:
93
我们把Swoole主服务程序做成系统服务后,这个服务一般是在后台运行的,如我们之前的邮件服务和聊天服务,我们希望把这些服务添加到系统环境中,可以随机器自启动,可以管理swoole服务的启动、停止和重启服务。 前言 我们在之前的Swoole实验室中的几个例子中,如果要启动swoole服务,需要手动执行 ...
分类:
其他好文 时间:
2020-07-24 09:20:42
阅读次数:
89
swoole4.x后支持一键协程 加上后,开启一键协程化后,MySQL、Redis、Curl 等操作会变成异步 IO //此行代码后,文件操作,sleep,Mysqli,PDO,streams等都变成异步IO,见文档"一键协程化"章节 Swoole\Runtime::enableCoroutine( ...
分类:
其他好文 时间:
2020-07-23 09:16:13
阅读次数:
135
MySQL连接池 在传统的网站开发中,比如LNMP模式,由Nginx的master进程接收请求然后分给多个worker进程,每个worker进程再链接php-fpm的master进程,php-fpm再根据当前情况去调用其worker进程然后处理PHP,如果需要MySQL,在与MySQL建立连接,这个 ...
分类:
数据库 时间:
2020-07-22 15:49:16
阅读次数:
72
指定时间后执行 $timer = \Swoole\Timer::after(毫秒数,function(){ 执行代码 }); 清除指定定时器 \Swoole\Timer::clear($timer); 附上示例代码 $timer1 = \Swoole\Timer::tick(5000,functio ...
分类:
其他好文 时间:
2020-07-21 22:21:55
阅读次数:
88
使用示例: $atomic = new Swoole\Atomic(); $serv = new Swoole\Server('127.0.0.1', '9501'); $serv->set([ 'worker_num' => 1, 'log_file' => '/dev/null' ]); // ...
分类:
系统相关 时间:
2020-07-19 23:48:19
阅读次数:
94
swoole 协程通道 为了协程直接互相通讯传递数据 和go的通道很相似 Co\run(function(){ $chan = new Swoole\Coroutine\Channel(1); Swoole\Coroutine::create(function () use ($chan) { fo ...
分类:
其他好文 时间:
2020-07-19 23:38:57
阅读次数:
108
前言 某个产品 或者订单,有个有效期 过了有效期要取消 方法一 : 写个脚本,用crontab 定时扫描 改变状态 但是最低只能一分钟 ,不适合 方法二 : 用swoole得毫秒定时器,每秒钟去扫描表 明显占用资源 mysql受不了 方法三 :用rabbitmq延时队列 一开始将其丢入mq 死信队列 ...
分类:
其他好文 时间:
2020-07-18 15:40:48
阅读次数:
65
协程使用注意事项 协程内部禁止使用全局变量,以免发生数据错乱; 协程使用 use 关键字引入外部变量到当前作用域禁止使用引用,以免发生数据错乱; 不能使用类静态变量 Class::$array / 全局变量 $_array / 全局对象属性 $object->array / 其他超全局变量 $GLO ...
分类:
其他好文 时间:
2020-07-15 23:14:15
阅读次数:
96
第1步:安装依赖 add-apt-repository ppa:ondrej/php apt install php-dev 第2步:编译安卓swoole wget https://codeload.github.com/swoole/swoole-src/tar.gz/v4.5.2 然后tar z ...
分类:
Web程序 时间:
2020-07-14 21:50:25
阅读次数:
137