
swoole | swoft
文章平均质量分 58
swoft 经验积累
戴国进
往后余生,专注人工智能领域!!!
展开
-
swoole结合php的pdo mysql模式出现MySQL server has gone away
参考: https://my.oschina.net/fage1151/blog/995775 常驻内存的PHP程序mysql报错 mysql has gone away https://www.cnblogs.com/xieyong-p/p/9808246.html Yii2 框架解决MySQL server has gone away问题原因这要从mysql的机制说起,mysql本身是一个多线程的程序,每个连...转载 2021-02-25 12:01:56 · 3095 阅读 · 0 评论 -
基于 Swoole 实现高性能 HTTP 服务器
安装配置 LaravelS在 Laravel 应用中使用 Swoole 之前,先通过 Composer 安装 LaravelS 扩展包:composer require hhxsv5/laravel-s该扩展包具备自动发现功能(Laravel 5.5 以上版本可用),无需手动在config/app.php配置文件中注册,安装完成后,运行如下 Artisan 命令相应脚本和配置文件发布到根目录下:php artisan laravels publish该命令会发布配置文件la...转载 2020-11-13 15:15:23 · 5322 阅读 · 0 评论 -
学习Swoole需要掌握哪些基础知识
参考swoole手册:https://wiki.swoole.com/#/other/tools多进程/多线程了解Linux操作系统进程和线程的概念 了解Linux进程/线程切换调度的基本知识 了解进程间通信的基本知识,如管道、UnixSocket、消息队列、共享内存SOCKET了解SOCKET的基本操作如accept/connect、send/recv、close、listen、bind 了解SOCKET的接收缓存区、发送缓存区、阻塞/非阻塞、超时等概念IO复用了解select.原创 2020-10-20 21:15:47 · 5325 阅读 · 0 评论 -
Swoole 常驻内存以及如何避免内存泄漏
关联阅读:https://cloud.tencent.com/developer/article/1700076 内存泄漏检测工具的使用这篇文章参考了:https://deepmind.t-salon.cc/article/1695 swoole的详细介绍 在传统的web开发模式中,我们知道,每一次php请求,都要经过php文件从磁盘上读取、初始化、词法解析、语法解析、编译等过程,而且还要与nginx或者apache通信,如果再涉及数据...原创 2020-10-20 21:07:29 · 8028 阅读 · 0 评论 -
swoole 实现数据库连接池
参考:https://blog.youkuaiyun.com/weixin_44763987/article/details/106638386?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160705140919725271670340%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=16070514091972527167原创 2020-12-04 21:57:38 · 5023 阅读 · 0 评论 -
Swoft 2.x Rpc调用
Swoft框架的初始化Swoft初始化有六个步骤:ENV环境文件初始化 注解信息扫描收集 配置初始化 注册类到bean容器 收集事件监听器 启动console控制台,启动相应的服务官方文档而Rpc作为Swoft提供的基础模块之一,其初始化流程也与框架的初始化一致Rpc服务调用Rpc的本质也是一个请求的发送和处理,所以会有发送请求的Client和接收请求的Server,这两者在Swoft中都需要进行Bean容器的注册Rpc 服务初始化.原创 2021-09-24 11:04:05 · 509 阅读 · 0 评论 -
swoft 与 laravel-swoole 框架选型对比,包括ab压测工具的使用、等待协程完成
一、导入数据1.通过目录导入数据:/usr/local/mongodb/bin/mongorestore -u graphics_mongo_user_write -p 'pass' -h 127.0.0.1 --port 20000 -d graphics /opt/graphics/ --authenticationDatabase admin转载 2021-09-01 09:34:03 · 1404 阅读 · 0 评论 -
Swoft2.x Task、协程 的使用
以下是官方给出解释:链接:https://docs.gitlab.com/ee/security/webhooks.htmlIf you have non-GitLab web services running on your GitLab server or within its local network, these may be vulnerable to exploitation via Webhooks.WithWebhooks, you and your project m..原创 2021-08-28 16:30:20 · 619 阅读 · 0 评论 -
swoft 协程 的使用
php是一门应用非常简单,开发效率极高的一门语言,其弱类型的变量能省去程序员大量的定义变量、类型转换等的时间和精力。它是一种适用于web开发的动态语言。1. php设计的原理和特点多进程模型:这样能做到进程间互相不受影响,对于进程的资源利用更快速、便捷 弱类型语言:和强类型语言C、C++、java等语言不同,php中变量的类型并不是一开始就确定的,他是在运行时才确定的,可以隐式或显式的对其进行类型转换,这就使其在开发中非常的灵活,程序员无需关注变量类型的问题 Zend引擎+ 组件(ext)的模式原创 2021-08-27 21:54:18 · 727 阅读 · 0 评论 -
swoft 切面AOP尝试
官网文档https://www.swoft.org/documents/v2/basic-components/aop/ 官网的文档已经写得很好另外一篇写得很好的文章:https://blog.youkuaiyun.com/hualaoshuan/article/details/105076999视频教程https://www.bilibili.com/video/BV12J411j721?p=51切面 就是不破坏原有代码逻辑,往里面加入需要执行的前置 后置 操作PointBean:定...原创 2021-06-28 14:31:25 · 612 阅读 · 0 评论 -
Swoft 2.x 详解Bean
什么是Bean呢?Swoft中Bean是一个类的对象实例 每个被Swoft管理的PHP对象称之为Bean Swoft提供了一个IoC容器来初始化对象和获取对象,用来解决对象之间的依赖管理。以前当我们要调用一个类的时候是需要先使用new关键字对类进行实例化后才能使用,现在有了Bean,当Swoft启动的时候就给实例化并一直存在,当你使用时不再需要再去new,这样可以节省资源。以JavaBean为例:JavaBean是一种Java语言编写的可重用组件,为了编写JavaBean类必须是具体的和公共的转载 2021-06-15 16:31:12 · 953 阅读 · 0 评论 -
Swoft 2.x 服务降级与熔断器 - Breaker 关键字的使用
服务降级服务降级,其实对功能的一种容错机制.https://doc.swoft.org/master/zh-CN/service-governance/fallback.html假设一个功能 需要服务A用户注册、服务B发送邮件、服务C记录日志,并且这3者是一个调用链。那么如果服务C崩溃了,就回影响到服务B和服务A。为了解决这个问题,就需要用到服务降级功能了。回顾https://blog.youkuaiyun.com/github_26672553/article/details/82784834原创 2021-06-10 10:17:33 · 1473 阅读 · 0 评论 -
Swoft 容器注入 - Inject 关键字的使用
可以借助Swoft下的Bean类操作容器示例:将类绑定至容器use Swoft\Bean\Annotation\Bean;/** * @Bean("imageLogic") */class ImageLogic extends BaseLogic{ /** * 根据id获取图片 * @param int $id * @return array */ public static function getOne(int $id原创 2021-06-10 09:37:32 · 1586 阅读 · 0 评论 -
swoft 2.x Dockerfile
# @description php image base on the debian 9.x## Some Information# ------------------------------------------------------------------------------------# @link https://hub.docker.com/_/debian/ alpine image# @link https://hu.转载 2021-06-09 16:48:30 · 669 阅读 · 0 评论 -
Swoft 单元测试 “类找不到” 和 “协程报错” 问题解决方案
前言:基于项目中使用swoft写Api接口服务,要求使用phpunit单元测试,趟过两个大坑。1. 报各种类的找不到,原因是swoft框架测试基础类SwoftTest\Testing\TestApplication 无法自动加载。解决办法:需要手动加载,更改文件test/bootstrap.php...转载 2021-05-31 20:08:25 · 1155 阅读 · 0 评论 -
swoft 2.x HttpClient 发送文件进行请求
今天研究了下 swoft2.x 封装的Swoft\Swlib\HttpClient ,没办法发送文件,可以基于 swoole 扩展的Swoole\Coroutine\Http\Client 自已进行封装。参考:https://wiki.swoole.com/wiki/page/899.html Client 的 addFile 函数用法。示例:...原创 2021-05-20 17:49:17 · 814 阅读 · 0 评论 -
swoft 上传图片到 阿里云oss aliyun-oss
1、swoft 获取上传的文件 。官方文档上面没有看到 $files = $request->getUploadedFiles(); $file = $files['file'];2、在模型文件中引入sdkrequire_once "/home/www/swoft/app/Model/Entity/aliyun-oss/autoload.php";3、引用命名空间use OSS\OssClient;use OSS\Core\OssExce...转载 2021-05-20 10:41:18 · 766 阅读 · 0 评论 -
Swoft 2.x 查询构造器最终生成sql的地方
vendor/swoft/db/src/Connection/Connection.php 文件的 runQueryCallback 方法原创 2021-05-18 16:49:29 · 760 阅读 · 0 评论 -
swoft2 常用命令 和 代码片段
php bin/swoft entity:create orders 跟据orders表创建entity实体文件原创 2021-02-02 22:05:34 · 2828 阅读 · 0 评论 -
Swoft2 WebSocket启动和测试
swoft 的 github项目地址:https://github.com/swoft-cloud/swoft建立新WS项目(Create new project)Useswoft-clitool to create new project for Websocket.使用swoft-cli工具为Websocket创建新项目。php swoftcli.phar create:app --type ws swoft-ws-appcd swoft-ws-appcompose...原创 2021-01-11 11:02:45 · 7039 阅读 · 2 评论 -
swoft2 小白教程系列-进程篇
swoft2 自定义用户进程来定期执行用户自定义任务swoft2 支持进程池解决多进程并发执行用户自定义任务swoft2 进程详解多进程程序设计能解决很多有意义的问题,程序的主进程运行核心任务,一些辅助进程解决一些例如消息队列的处理,后台定期执行的任务处理,文件监控,定期日志上报等相关功能.每个进程都有独立的上下文,进程之间互不干扰.功能的相关配置选项用户进程的配置一般需要在 bean.php 里注册,系统会自动加载用户配置的自定义进程 进程池的配置也需要在 bean.php 配置.转载 2020-12-23 18:39:36 · 4763 阅读 · 0 评论 -
使用supervisor 管理swoft进程
背景: 项目中遇到有些脚本需要通过后台进程运行,保证不被异常中断,之前都是通过nohup、&、screen来实现,带着能否做一个start/stop/restart/reload的服务启动的想法找到里Supervisor。 关于supervisor的介绍在网上大致搜索总结如下: Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式...原创 2020-12-02 11:04:32 · 4632 阅读 · 0 评论 -
swoft2.x swoftCli 自动重启服务
目的:上传代码后HTTP服务自动重启,不需要自己手动执行:php bin/swoft http:start 自动重启适用于开发调试阶段,因为不能再后台运行所以在线上环境的话还是要重启http服务下载安装:你需要从swoft-cli的GitHubReleases下载打包好的swoftcli.phar到项目根目录 https://github.com/swoft-cloud/swoft-cli 查看源码,从release下载包 wget https://github.com/...原创 2020-11-19 10:46:52 · 4951 阅读 · 0 评论 -
Swoft2 的ORM模型关联
Swoft 2项目说明文档地址:https://www.swoft.org/documents/v2/ORMORM用于实现面向对象编程语言里不同类型系统的数据之间的转换,ORM有多种设计模式,swoft采用的是data mapper,业务和实体分开,但是也实现了类似ActiveRecord的操作方式,其实都是同一个实现的。数据库操作分为两种基础(ActiveRecord)和高级的(data mapper),基础的用于快速开发和常见的查询操作,高级的用于事务和一些复杂的业务查询。查询器语法转载 2020-11-25 22:03:09 · 4925 阅读 · 0 评论 -
swoft2 教程系列-HTTP Server
Http 生命周期了解请求生命周期, 有利于理解HTTP服务各组件, 编写出更好代码.配置参数在应用下的 app/bean.php 配置 server,在这个文件里,你可以看到 Http Server数组里面包含了 Http Server 的基本信息。下面列举了一些简单的配置,你也可以自由组合同时提供多种服务。 'httpServer' => [ 'class' => HttpServer::class, 'port' => 18306, 'listener' =&转载 2020-11-23 17:08:38 · 4952 阅读 · 0 评论 -
Swoft 2.X 中间件
针对HTTP服务来说,中间件贯穿着整个生命周期的位置且看官方一张图片说明:可以看到中间件是贯穿整个请求的,请求开始之后会:匹配路由->执行中间件->执行控制器方法->再次执行中间件。可以当作其他框架的前置方法和后置方法,中间件在调用控制器方法之前会执行,调用之后也还会执行。中间件起到的作用中间件在可以进行用户登陆的验证、权限校验、数据修正、统一返回格式等等,其实只要了解了生命周期之后基本上就可以想象到中间件的作用。定义中间件只需要实现了 Swo...原创 2020-11-23 11:21:17 · 4577 阅读 · 0 评论 -
swoft2 教程系列-验证器
正常情况都需要对用户输入参数进行校验,此时就会用到验证器。验证器可以验证控制器中参数,也支持验证 Websocket 参数以及 RPC 参数验证,提供默认和自定义两种类型的验证器,还可添加自定义验证规则。配置需要启用验证器,这里以 Http-server 启用为例,其它一样(app/bean.php)return [ // ...... 'httpDispatcher' => [ // ...... 'afterMiddlewares' => [ .转载 2020-11-19 16:01:55 · 5197 阅读 · 0 评论