软件版本 "php": ">=7.2", "workerman/webman-framework": "^1.5.0", 问题情景 使用“分组路由”做API接口 前后端分离跨域,在接口测试工具调试是能正常获取数据的;但在网页浏览器上调试就遇到了CORS、404的错误;错误的路由代码如下: Route::group('/w', function () { Route::post('/v/list', ...
在composer个别库中,会include配置文件,在调用时会重复include,并且不会释放内存,导致实际业务不复杂,但是循环之后内存占满进程被kill掉。分享一下这个过程,开发时要留意。 pinyin.php: <?php return [ 'key1' => 'value1', ]; demo.php: <?php $list = []; // 假设这里有10万条数据库记录要处理...
webman-admin 的一键菜单功能非常的好用,但是仍然有些许不太方便的地方,例如,默认会先创建2个时间字段,后续一键生成代码时,时间字段会在表头的最前面,这C位怎么能让它俩占据呢,所以,今天列表拖拽它来了 先来简单的看看效果图 通过在表单属性中直接拖拽行 就能实现排序啦,用起来还是比较贴心的。 首先请出我们的核心工具 layui-soul-table 这是基于layui框架的一个第三方拖拽插件,用起来相...
博客园的事情简单说下: 主要原因是百度的蜘蛛把博客园的服务给爬垮了,就是服务down了,原来的k8s+ .net扛不住了,导致百度给博客园降权了,流量只有原来的十分之一左右,流量不行,广告业务也不行了,如果早点重构或许被降权这是就不会发生了,好像这事也处理的也不好,炮轰百度的蜘蛛爬虫了的死亡螺旋爬行,得罪了百度一些相关人员。 总结:本身百度蜘蛛有问题,但是服务扛不住,导致博客园正常运营出现问题,博客园炮轰百度蜘蛛问题...
webman分页要安装分页组件,很方便了。但每次用的时候都要实例化Paginator,还要去修改分页器的样式(默认Bootstrap)。但还是总觉得有点麻烦。 利用think-template的扩展模板标签库免实例化Paginator 1、视图使用think-template composer require topthink/think-template 2、修改配置config/view.php为 <?ph...
先说明新建的三个文件都是干嘛的 GlobalData.php 使用了 GlobalData变量共享组件 HealthCheck.php 按照设定的时间做健康检查 Proxy.php 代理设置,需要将后台的代理改成这里的设置 使用Composer添加一些依赖 composer require workerman/globaldata composer require guzzlehttp/guzzle 在 ...
前言 今年接触了一个策略类手游相关的项目,后端本身计划是使用skynet进行开发的,后来结合项目的时间紧急程度和客户端开发组讨论后决定使用PHP进行快速开发,后期再使用其他语言框架进行拆分业务;综合考虑最后选用了webman作为主要开发框架。 整体项目分为配置服务、http-api服务、websocket服务三大部分,其中配置管理主要是兼容客户端生成的配置数据进行导入导出转换加载,底层使用MySQL进行储存,多服务间...
通常,很多人都是在控制器里直接调用view()方法渲染视图文件,因为很多框架都是这么干的,于是大家都这么干了,但这种方式并不好,使得view与controller极度耦合。 webman中的controller没有传递request对象,使得代码写起来有些繁琐,基本每个action要传递request,但如果在construct中传递request,就可以这么写: protected $request; ...
webman-framework/src/App.php几处性能优化(建议官方修改) 不是鸡蛋里挑骨头,webman本身就是出于对性能的追求,所以应要该精于求精,改进任何不太合理的地方。 guessControllerAction(...)这个方法,在foreach循环中用了array_merge,array_merge这个方法性能并不是很好,另一个问题是进行了两次foreach循环,实际只需要一次,看对比图。 ...
看了webman框架性能介绍,有点垂涎,于是着手体验一下,但有些地方与自己的架构思维不太符合,还发现了一些性能问题,在此分享如何修改和优化。 如何修改框架源码? 直接去修改源文件的代码这种方式不可取,因为官方升级后不好同步,也不好对比文件修改了什么地方,所以最好的方式是利用composer加载方式,重新创建一个目录,把源码文件复制到新建目录里进行修改,最后利用自己创建的autoload加载文件,具体流程如下: 在...
鉴于之前的老版本是纯 Bash 写的,扩展性不是很好,而且里面的库、扩展无法及时使用最新版,所以一怒之下重写了整个编译项目。新版本支持旧版本的所有扩展,同时也新增了很多扩展。 https://github.com/crazywhalecc/static-php-cli 新版本可以手动本地在 Linux(Debian、Ubuntu、RHEL、CentOS 等主流发行版)、Windows、Alpine Linux、mac...
PHP版本设置为“纯静态” 反向代理设置 目标URL: http://0.0.0.0:8787 webman后台启动 php ./start.php start -d ...
目前我的PHP版本是8.1,在限制同一设备只能一个登录时,调用Gateway::sendToCurrentClient或Gateway::sendToClient发送给第二个同类设备,第二个同类设备再在Events类中查找同一个帐号其他设备,并通过Gateway::sendToUid发送时数据为null导致报如下错误。 虽然最后在发送之前加上判断,防止发送数据为null。同时也说明vendor\workerman\g...
把ThinkPHP的官方文档撸了3遍以上,Webman撸了两边,再加上实际项目的开发和对比,才有的本文章,希望能帮到大家,如有错误和疏漏请不吝赐教~ 1、webman内存常驻,业务执行只有3个流程(框架接收请求、框架执行业务逻辑、框架将结果返回给客户端);TP业务流程从 nginx/apache接收请求 到 php-fpm初始化环境,如创建变量列表 到 框架初始化(载入 Composer 的自动加载 autoload...
PushService PushService 是一个推送服务平台,客户端基于订阅模式,兼容 pusher,创建应用信息即可快速使用。 使用 webman + GatewayWorker 开发实现 客户端连接、应用管理、数据统计、订阅发布数据等。 项目地址 https://github.com/hsk99/push-service 安装 composer安装 创建项目 composer create-proj...
认识 webman 我们公司项目一直使用的 Laravel,部分项目也可能会用到 laravels(swoole),所以我对于 workerman 的关注少之又少。我平时本来就比较习惯逛 LearnKu,也是在今年上半年看到了一篇关于介绍 webman 的帖子,这才知道 walkor 老大居然出了一个基于 workerman 的web框架,一下子就来了兴趣,各种翻论坛看相关帖子,哈哈(就喜欢研究新玩意儿😂)。但是由于...
结合帖子分享,成功安装,总结如下 1.安装webman composer create-project workerman/webman 2.webman框架升级,安装console,webman安装 composer require workerman/webman-framework ^1.4.0 && composer require webman/console ^1.0.27 &&a...
写用户认证中间件的时候遇到一个问题, 我要在中间件里校验token, 在控制的beforeAction中获取用户信息, 然而它先走的是beforeAction, 就是控制器先于中间件执行, 后来看到这个贴子控制器与中间件执行顺序 才知道ActionHook本身就是全局中间件, 那这样的话, 我还不如直接在beforeAction里做用户校验, 但是为了逻辑上的规范, 我禁用了全局ActionHook中间件, 在需要b...
个人建议一些核心的扩展、函数依赖,可以另外开发一个requirements check工具,不需要再代码逻辑中不停地check。对一些非核心的依赖也可以做polyfill。比如在start.php里的这个check: Worker::$onMasterReload = function () { if (function_exists('opcache_get_status')) { ...... ...
论坛 访问地址 https://laravel-workerman.iwnweb.com/ 引入 webman/push 适配说明文档 https://github.com/mouyong/laravel-octane-workerman/tree/gatewayworker/webman_plugin_require_example 在 laravel 框架中引入 webman plugin 1. 添加插件安装脚...