EasySwoole

1、查询被占用端口
netstat -ntlp2、杀死进程,被占用端口
kill 端口           //这个无法杀死时,使用下面这个
killall php        //杀死所有php进程
kill -9 PID       //PID端口3、框架安装
composer require easyswoole/easyswoole=3.5.x
php vendor/easyswoole/easyswoole/bin/easyswoole install更新命名空间
composer dump-autoload启动
php easyswoole server start
守护模式启动
php easyswoole server start -d
守护模式启动的时候停止服务
php easyswoole server stop4、其他
查看easyswoole安装的配置,如安装的mysqli等等
composer info | grep easyswoole查看swoole版本
php --ri swoole卸载mysqli
composer remove easyswoole/mysqli
安装orm,orm自带mysqli,如果安装了mysqli,在执行下面安装orm会报错
composer require easyswoole/orm不能运行
删掉vendor和easyswoole还有composer.lock
重新安装

安装excel

composer require phpoffice/phpexcel

redis安装和配置

安装redis
composer require easyswoole/redis
安装redis连接池
composer require easyswoole/redis-pool配置,在(根目录EasySwooleEvent.php的initialize方法加入)
//redis连接池注册(config默认为127.0.0.1,端口6379)
$redis = RedisPool::getInstance()->register(new \EasySwoole\Redis\Config\RedisConfig(['host'      => '127.0.0.1','port'      => '6379','auth'      => '123456',//密码,没有就留空]
));
//配置连接池连接数
$redis->setMinObjectNum(5);
$redis->setMaxObjectNum(20);在控制器中使用
引入
use EasySwoole\RedisPool\RedisPool;
使用
$redis = RedisPool::defer();
//key,数据,时间(秒)
$redis->set('name',1,10);
$name = $redis->get('name');//获取连接池对象(返回bool(true))
$redisPool = RedisPool::getInstance()->getPool();
$redis = $redisPool->getObj();
$redisPool->recycleObj($redis);

新环境不能运行

删掉vendor和easyswoole还有composer.lockcomposer require easyswoole/easyswoole=3.5.x
php vendor/easyswoole/easyswoole/bin/easyswoole install安装mysql
composer require easyswoole/orm
安装redis
composer require easyswoole/redis
安装redis连接池
composer require easyswoole/redis-pool

测试工具

安装ab工具
yum -y install httpd-tools
查看安装目录
which ab
查看版本
ab -V
使用,发起1000个请求(请求1000次),并发100(同时100个用户请求)
ab -n 1000 -c 100 https://baidu.com/
ab -n 1000 -c 100 http://47.99.53.108:9501/User/dade测试数据说明(服务器1核1G),请求5万,并发100
Benchmarking 47.99.53.108 (be patient)         //基准47.99.53.108(耐心等待)
Completed 5000 requests                        //已完成5000个请求
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requestsServer Software:        EasySwoole             //服务器软件:EasySwoole
Server Hostname:        47.99.53.108           //服务器主机名:127.0.0.1
Server Port:            9501                   //服务器端口:9501Document Path:          /User/dade             //文档路径:/User/dade
Document Length:        28 bytes               //文件长度:28字节Concurrency Level:      100                    //并发级别:100
Time taken for tests:   66.061 seconds         //测试所用时间:66.061秒
Complete requests:      50000                  //完成申请:50000
Failed requests:        0                      //失败的请求:0
Write errors:           0                      //写入错误:0
Total transferred:      9450000 bytes          //传输总量:9450000字节
HTML transferred:       1400000 bytes          //传输的HTML:1400000字节
Requests per second:    756.88 [#/sec] (mean)  //每秒请求数:756.88[#秒](平均值)
Time per request:       132.122 [ms] (mean)    //每次请求的时间:132.122[ms](平均值)
Time per request:       1.321 [ms] (mean, across all concurrent requests)    //每个请求的时间:1.321[ms](所有并发请求的平均时间)
Transfer rate:          139.70 [Kbytes/sec] received  //传输速率:接收到139.70[千字节/秒]Connection Times (ms)                           //连接时间(毫秒)min  mean[+/-sd] median   max     //最小平均值[+/-sd]最大中值
Connect:        3   79 279.8      4    4081     //连接:379279.844081
Processing:     6   49 148.2     15    5102     //处理:649148.215102
Waiting:        6   45 145.1     15    5102     //等候电话:645145.115102
Total:          9  128 326.6     20    7115     //总数:9128326.6207115Percentage of the requests served within a certain time (ms)  //在特定时间内服务的请求百分比(毫秒)50%     20                                    //50% 2066%     3275%     4380%     5690%    24595%   102398%   104899%   1235100%   7115 (longest request)                  //100% 7115(最长请求)

控制器

控制器正常创建
App/HttpController/ 目录下创建,文件名首字母大写,控制器名首字母大写
根据创建目录和控制器访问,方法小写

安装orm操作数据库(配置,创建模型,使用模型查询)

安装,如果报错看上面的报错
composer require easyswoole/orm可以在框架 initialize 主服务创建事件中注册连接
主方法在根目录的EasySwooleEvent.php文件1、配置mysql连接(在根目录EasySwooleEvent.php)
public static function initialize()
{$config = new Config();$config->setDatabase('easyswoole_orm');//数据库$config->setUser('easyswoole_orm');//用户名$config->setPassword('iaPrA78EmEx6kAEC');//密码$config->setHost('127.0.0.1');$config->setPort(3306);$config->setCharset('utf8mb4');$config->setTimeout(15); // 超时时间//连接池配置$config->setGetObjectTimeout(3.0); //设置获取连接池对象超时时间$config->setIntervalCheckTime(30*1000); //设置检测连接存活执行回收和创建的周期$config->setMaxIdleTime(15); //连接池对象最大闲置时间(秒)$config->setMinObjectNum(5); //设置最小连接池存在连接对象数量$config->setMaxObjectNum(20); //设置最大连接池存在连接对象数量$config->setAutoPing(5); //设置自动ping客户端链接的间隔DbManager::getInstance()->addConnection(new Connection($config));
}2、创建模型(开始都是没有文件的,自己创建)
在App\HttpController\Models中创建
创建User.php模型
<?php
namespace App\HttpController\Models;
use EasySwoole\ORM\AbstractModel;
class User extends AbstractModel
{/*** @var string*/protected $tableName = 'dade_user';
}3、使用(在控制器User中使用)
引入模型
use App\HttpController\Models\User as users;
使用查询并返回
$res = users::create()->get(1);
$this->writeJson(200,$res,"success");

原生sql查询

引入
use EasySwoole\Mysqli\QueryBuilder;
use EasySwoole\ORM\DbManager;代码
$queryBuild = new QueryBuilder();//new一个执行查询原生
$queryBuild->raw("select * from dade_user where id= 1");//sql
$data = DbManager::getInstance()->query($queryBuild, true, 'default')->toArray();//升级版,执行sql语子
$this->jsonData(200,$data['result']);//返回,这个是我自己编写的,你们请使用官网上的$this->writeJson(200,['name'=>'大得']);

模型新增

新增一条
$user['name'] = '大得';
$user['phone'] = '1336677';
users::create($user)->save();批量新增,dade_user是表名
users::create()->func(function ( QueryBuilder $builder){$builder->insertAll('dade_user', [['name' => '大得1','phone' => 1336677,],['name' => '大得2','phone' => 1336677,],]);
});

模型修改

$datas['name'] = "大得6669999";
$user = users::create()->where("id",1)->update($datas);原生更新法
$datas['name'] = "大得6669999";
$user = users::create()->where("id=2")->update($datas);

模型删除

删除全表数据,清空
users::create()->destroy(null,true);
删除
users::create()->where('id',1)->destroy();
users::create()->destroy(['id' => 1]);

获得域名后面的链接做token登录

//全局中间件判断登录,获得$request->getServerParams()
\EasySwoole\Component\Di::getInstance()->set(\EasySwoole\EasySwoole\SysConst::HTTP_GLOBAL_ON_REQUEST, function (\EasySwoole\Http\Request $request, \EasySwoole\Http\Response $response) {
$cookie = $request->getCookieParams('user_cookie');// 对 cookie 进行判断,比如在数据库或者是 redis 缓存中,存在该 cookie 信息,说明用户登录成功$isLogin = false;if ($isLogin) {// 返回 true 表示继续往下执行控制器 actionreturn true;} else {// 这一步可以给前端响应数据,告知前端未登录$data = Array("code" => 200,"result" =>  $request->getServerParams(),"msg" => '请先登录');$response->withHeader('Content-Type', 'application/json;charset=utf-8');$response->withStatus(200);$response->write(json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));// 返回 false 表示不继续往下执行控制器 actionreturn false;}
});

跨域(跨域和效验登录是一起的)

\EasySwoole\Component\Di::getInstance()->set(\EasySwoole\EasySwoole\SysConst::HTTP_GLOBAL_ON_REQUEST, function (\EasySwoole\Http\Request $request, \EasySwoole\Http\Response $response): bool {###### 处理请求的跨域问题 ######$response->withHeader('Access-Control-Allow-Origin', '*');$response->withHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');$response->withHeader('Access-Control-Allow-Credentials', 'true');$response->withHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With');if ($request->getMethod() === 'OPTIONS') {$response->withStatus(\EasySwoole\Http\Message\Status::CODE_OK);return false;}return true;});

EasySwoole教程相关推荐

  1. easyswoole数据库连接池_easyswoole redis连接池:集群迁移教程

    场景 在业务量小的情况下,我们使用Redis单机连接池就可以满足业务需求.因此,redis单机连接池就可以满足我们的业务.因此我们会这样写: 示例 注册连接池 use EasySwoole\Redis ...

  2. EasySwoole 基础入门

    使用 Composer 安装 composer require easyswoole/easyswoole=3.x php vendor/bin/easyswoole install 启动框架 php ...

  3. Virtualbox+Vagrant搭建linux虚拟机并搭建easySwoole框架

    首先是官网下载 VirtualBox Downloads – Oracle VM VirtualBox Vagrant Downloads | Vagrant by HashiCorp 一路next安 ...

  4. 使用Docker搭建svn服务器教程

    使用Docker搭建svn服务器教程 svn简介 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很 ...

  5. mysql修改校对集_MySQL 教程之校对集问题

    本篇文章主要给大家介绍mysql中的校对集问题,希望对需要的朋友有所帮助! 推荐参考教程:<mysql教程> 校对集问题 校对集,其实就是数据的比较方式. 校对集,共有三种,分别为:_bi ...

  6. mysql备份psb文件怎么打开_Navicat for MySQL 数据备份教程

    原标题:Navicat for MySQL 数据备份教程 一个安全和可靠的服务器与定期运行备份有密切的关系,因为错误有可能随时发生,由攻击.硬件故障.人为错误.电力中断等都会照成数据丢失.备份功能为防 ...

  7. php rabbmq教程_RabbitMQ+PHP 教程一(Hello World)

    介绍 RabbitMQ是一个消息代理器:它接受和转发消息.你可以把它当作一个邮局:当你把邮件放在信箱里时,你可以肯定邮差先生最终会把邮件送到你的收件人那里.在这个比喻中,RabbitMQ就是这里的邮箱 ...

  8. 【置顶】利用 NLP 技术做简单数据可视化分析教程(实战)

    置顶 本人决定将过去一段时间在公司以及日常生活中关于自然语言处理的相关技术积累,将在gitbook做一个简单分享,内容应该会很丰富,希望对你有所帮助,欢迎大家支持. 内容介绍如下 你是否曾经在租房时因 ...

  9. Google Colab 免费GPU服务器使用教程 挂载云端硬盘

    一.前言 二.Google Colab特征 三.开始使用 3.1在谷歌云盘上创建文件夹 3.2创建Colaboratory 3.3创建完成 四.设置GPU运行 五.运行.py文件 5.1安装必要库 5 ...

最新文章

  1. 配置kubernetes服务basic auth
  2. Android MVP 设计模式
  3. 使用Java 8.0进行类型安全的依赖项注入
  4. boost学习之boost::shared_ptr
  5. 中国剩余定理-模版(互质版)
  6. 专线维护 07/11
  7. android应用程序优化之布局优化
  8. android fastboot模式,fastboot
  9. 网络层协议——ICMP协议
  10. Java基础之序列化
  11. 大中型 UGC 平台的反垃圾(anti-spam)工作
  12. C#调用百度大脑API初探2
  13. Confluence 查看文档乱码问题
  14. 数字化转型中基于交付价值数据治理的6大原则
  15. 树梅派应用25:宅男必备:配备电子纸屏幕的抽纸盒
  16. cad计算机绘注意事项,CAD打印的基本操作和重要的注意事项
  17. Rosalind第68题:Counting Optimal Alignments
  18. PHP如何使用gregoriantojd()函数进行日期转换?
  19. WMS系统数据库表设计
  20. 苹果几是双卡双待_苹果史上首款实体双卡双待小屏iPhone诞生,值得入手吗?

热门文章

  1. 安装nessus8.15,并解除ip扫描限制
  2. vim 编码格式设置不正确_vim自动选择编码格式
  3. python for菜鸟_菜鸟Python学习
  4. DeleteFile为啥老是删除不了文件那,低级错误啊
  5. c++如何按照空格分割字符串
  6. pytorch 41 yolov8的无nsm后处理的onnxruntime部署方案
  7. 恶意软件分析资料大合集
  8. 复检网站_渗透测试项目分析手段
  9. 5.2 积分基本公式
  10. git 如何压缩多个commits 成一个commit