我们把Swoole主服务程序做成系统服务后,这个服务一般是在后台运行的,如我们之前的邮件服务和聊天服务,我们希望把这些服务添加到系统环境中,可以随机器自启动,可以管理swoole服务的启动、停止和重启服务。 前言 我们在之前的Swoole实验室中的几个例子中,如果要启动swoole服务,需要手动执行 ...
分类:
其他好文 时间:
2020-07-24 09:20:42
阅读次数:
89
前言 由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现。当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socket通讯和本地数据库功能,又或者通过html5的WebSocket也可以实现与服务器的通讯和服务端推功能 ...
分类:
Web程序 时间:
2020-07-23 16:16:28
阅读次数:
68
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
今天在项目中,遇见需要在websocket中注入redis工具类,最后发现通过@Autowired无法注入,最后网上搜寻了下答案,大致原因为spring管理的都是单例(singleton),和 websocket (多对象)相冲突。因为websocket是多实例单线程的,而websocket中的对象 ...
分类:
Web程序 时间:
2020-07-22 11:33:33
阅读次数:
97
指定时间后执行 $timer = \Swoole\Timer::after(毫秒数,function(){ 执行代码 }); 清除指定定时器 \Swoole\Timer::clear($timer); 附上示例代码 $timer1 = \Swoole\Timer::tick(5000,functio ...
分类:
其他好文 时间:
2020-07-21 22:21:55
阅读次数:
88
简介 WebSocket是基于TCP的一种新的网络协议,并在2011年被IETF定为标准的全双工通信协议,它实现了客户端与服务器全双工通信。 WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成 ...
分类:
Web程序 时间:
2020-07-21 14:11:10
阅读次数:
92
使用示例: $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