workerman
文章平均质量分 63
flysnownet
这个作者很懒,什么都没留下…
展开
-
websocket框架封装实现回调函数代替ajax
keyword:websocket回调,websocket像ajax一样,websocket接口请求,同步回调,websocket MVC框架前言传统http短连接拉取接收数据太浪费资源,tcp每次都得建立连接,三次握手,释放,只能单向通信,定时轮询。而websocket可以建立长连接,后一直保持,节约服务器资源,跟每台客户机只维持一个连接就行。节省流量 不需要频繁地发起关闭tcp连接,可以双向通信,协议以及数据格式自己算了算,省略HTTP上不必要的信息,基于以上原因,开发一套socket框架来原创 2022-04-29 15:26:11 · 4172 阅读 · 0 评论 -
docker nginx反向代理配置内部端口502 bad gateway
问题描述服务器80端口被nginx占用,workerman通过8088端口提供服务,两个服务都在docker容器里想让外部通过域名aaa.com访问到8088原创 2021-06-07 10:55:57 · 3530 阅读 · 0 评论 -
workerman gatawayworker 定时器
workerman初始化定时器,workerman重启定时器介绍业务中写的定时器,当遇到workerman异常,重启后会失效,所以想项目初始化时启动所有定时器,定时器写在配置文件中,这样业务每次重启时定时器也会随之生效代码实现如下 /** *初始化 * @author xingxiong.fei@163.com * @date 2020-09-03 9:43 */ public function init($worker...原创 2020-12-30 17:30:20 · 578 阅读 · 0 评论 -
json传输二进制图片二进制流小程序保存base64
easywechat获取小程序码二进制流,json传输二进制图片二进制流介绍项目中需要生成小程序码给前端,生成二维码接口微信服务器直接返回二进制数据流,因为前后端接口是json格式同时业务服务器不能保存图片再给前端访问,需要json返回二进制图片数据尝试直接返回二进制,字符太长无法输出,原理将二进制base64编码,得到字符串,再将base64字符串返回前端前端直接显示<img src=“data:image/png;base64,*********************原创 2020-11-10 11:56:44 · 2040 阅读 · 0 评论 -
workerman GatewayWorker配置wss服务
GatewayWorker配置开启wss服务代码start_gataway.php<?php/** * This file is part of workerman. * * Licensed under The MIT License * For full copyright and license information, please see the MIT-LICENSE.txt * Redistributions of files must retain th.原创 2020-10-28 17:07:48 · 1067 阅读 · 2 评论 -
GatewayWorker转发http请求给socket服务
workerman,GatewayWorker将http传统web请求转发给socket,tcp服务,在一个普通的Web项目中通过GatewayWorker推送数据介绍项目中使用GatewayWorker作为服务端,业务逻辑都在workerman中实现,客户端只能通过socket拉取数据,同时又有些第三方服务会发送http请求给服务器,比如支付回调,为解决这一问题,只好将http请求转发给workerman,处理完再将结果响应给http请求流程GatewayWorker中开启一个内部Ga原创 2020-10-22 10:31:29 · 1550 阅读 · 0 评论 -
docker上运行workerman,GatawayWorker的Dockerfile
介绍项目中使用worker运行gatawayWorker应用,所以写了个Dockerfile,用来构建满足workerman运行的环境基于php7.3-cli镜像,安装了event,mysql,redis扩展,composer工具DockerfileFROM php:7.3-cliLABEL maintainer="waxiongfeifei@gmail.com" version="1.0"RUN sed -i s@/deb.debian.org/@/mirrors.aliyun.原创 2020-09-09 12:20:33 · 2874 阅读 · 2 评论 -
docker运行workerman
介绍在docker上部署gatawayWorker项目,项目中使用到mysql,redis安装 mysql拉取镜像docker pull mysql:5.7运行容器docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --name m_mysql mysql:5.7-d 后台运行-p 端口映射,前面是宿主机端口,后面是需要映射的容器端口-e 设置环境变量,MYSQL_ROOT_PASSWORD是mysql的roo原创 2020-09-08 15:19:07 · 1767 阅读 · 5 评论 -
php redis断线重连
介绍在swoole ,workerman等cli长连接模式下,遇到Redis异常断开,后面又开启的情况,一般得重新启动程序才能正常使用,本文介绍在不重启服务,实现原来的Redis断线重连原理Redis 断开的情况下调用$Redis->ping()会触发Notice错误,Notice: Redis::ping(): send of 14 bytes failed with errno=10054当获取redis实例时,如果ping不通或者出现异常,就重新连接实现1.原创 2020-09-04 10:00:33 · 3018 阅读 · 1 评论 -
php集成封装monolog日志类
介绍最近写个框架,需要完成日志类,接过一番研究最后选用monolog,同时项目中数据库模型类使用了thinkPHP的ThinkORM,要记录sql日志的话,需要实现PSR-3日志规范的日志类首先下载monologcomposer require monolog/monolog主要代码log.php<?phpnamespace lib;use Psr\Log\LoggerInterface;use Monolog\Formatter\LineFormatter;.原创 2020-09-01 17:53:02 · 997 阅读 · 0 评论 -
php利用__callStatic静态调用同类中非静态方法
描述:php静态调用非静态方法场景:项目中将请求参数一到达就实例化封装为request类,想在业务其他地方通过Request::ip()静态方式获取数据实现方式想到了两种,其一,利用反射机制做静态代理,将当前实例化对象反射出来,获取到相关数据示例$request = new Request($message); $getFileMethod = (new \ReflectionObject($request))->getMethod($method).原创 2020-08-25 18:35:43 · 3714 阅读 · 0 评论 -
php redis单例模式类以及自动调用方式
单例类<?phpnamespace lib;class Redis{ private static $_instance; //存储对象 private function __construct($redisConfig ){ self::$_instance = new \Redis(); //从配置读取 self::$_instance->pconnect($redisConfig['hostname']原创 2020-08-21 16:37:38 · 470 阅读 · 0 评论 -
php自动加载以及php简单路由功能
前言:项目中需要在workernman基础上自己完成基础框架,主要是将用户请求的api路由到具体控制器方法,同时用到的类需要自动加载,原理:路由:url形如admin/admin/login ,将url分割,获取到具体的类,方法,调用这个方法自动加载:用spl_autoload_register,注册自动加载方法,通过命名空间找到文件路径,本项目中为了方便命名空间跟文件夹路径保持相同,比如 控制器admin的命名空间为namespace Applications\admin\contr原创 2020-08-14 11:59:24 · 5564 阅读 · 0 评论 -
thinkphp内置集成workerman以守护进程方式运行
一般启动方式php think worker:server支持的操作包括:操作 描述 start 启动服务(默认操作) reload 平滑重启 stop 停止服务 restart 重启服务 status 查看服务运行信息 connections 查看连接信息 如停止服务php think worker sto...原创 2019-08-13 09:28:13 · 15720 阅读 · 2 评论 -
tp5使用workerman实现异步任务
问题描述:采集数据时过程很慢,导致无法继续进行其他任务,,避免主业务被长时间阻塞,故而将其提交给异步任务,当任务完成通知客户端即可流程前端业务:由于本系统采用iframe结构,为避免点击其他页面业务中断,所以业务在父页面执行,1.用户在子页面点击采集按钮调用父级方法function to_collect(ids) { window.parent.start...原创 2019-08-20 10:58:13 · 13519 阅读 · 4 评论