1.安装swoole php扩展
2.安装easyswoole框架 需要安装各类扩展才可以使用
3.扩展使用列表 根据自己的需求定制下载
session 需要下载
mysql 需要下载 我用的是tp5.1 的think-orm
template 需要下载 我用的是tp5.1 的think-template
热重启服务需要下载
4.使用方式
a.热重启服务
composer 下载地址
composer require easyswoole/hot-reload
全局注册 找到EasySwooleEvent.php 的初始化函数(mainServerCreate)中
//热重启服务
$hotReloadOptions = new \EasySwoole\HotReload\HotReloadOptions;
$hotReload = new \EasySwoole\HotReload\HotReload($hotReloadOptions);
$hotReloadOptions->setMonitorFolder([EASYSWOOLE_ROOT . '/App']);
$server = ServerManager::getInstance()->getSwooleServer();
$hotReload->attachToServer($server);
b.session服务
composer 下载地址
composer require easyswoole/session=2.x
//类的引入
use EasySwoole\Session\Session;
use EasySwoole\Session\SessionFileHandler;
//初始化函数中
//session 服务
//可以自己实现一个标准的session handler
$handler = new SessionFileHandler(EASYSWOOLE_TEMP_DIR);
//表示cookie name 还有save path
Session::getInstance($handler,'easy_session','session_dir');
//在onRequest()函数中
$cookie = $request->getCookieParams('easy_session');
if(empty($cookie)){
$sid = Session::getInstance()->sessionId();
$response->setCookie('easy_session',$sid);
}else{
Session::getInstance()->sessionId($cookie);
}
//控制器中使用方式
//引入session类
use EasySwoole\Session\Session;
//唯一的sessionid
Session::getInstance()->sessionId();
//获取$cookie name
$sid = $this->request()->getCookidParams('easy_session');
//设置值
Session::getInstance()->set(session标识,数据);
//获取值
Session::getInstance()->get(session标识);
//消除session
Session::getInstance()->del(session标识);
//其他使用的需要去session.php文件中自行查看
c.模板使用
composer 下载地址
第一个 easyswoole模板驱动
composer require easyswoole/template
第二个 tp模板驱动
composer require topthink/think-template
//下载完成tp模板驱动 自己做处理 必须做 可以从别人的网站上抄一份 位置自己定义就可以了
//网址 网上搜索的大神网址介绍 谢谢
http://www.umdzz.cn/article/21/easyswoolethink-template
//注册引入类
use EasySwoole\Template\Render;
use App\Providers\Template;
//注册函数中使用
//注册模板使用全局
//在全局的主服务中创建事件中,实例化该Render,并注入你的驱动配置
$render = Render::getInstance();
$render->getConfig()->setRender(new Template());
$render->attachServer(ServerManager::getInstance()->getSwooleServer());
//控制器中使用方式
//引入模板类
use EasySwoole\Template\Render;
$tpl 模板的路径
$data 页面要渲染的内容
public function fetch($tpl,$data=array()){
if($tpl){
$this->response()->write(Render::getInstance()->Render($tpl,$data));
}else{
$this->writeJson(500,'','没有传入模板路径');
}
}
d.数据库使用
composer 下载地址
composer require topthink/think-orm
//下载完成后 可以在配置文件 dev.php获取开发环境 中加入数据库配置信息
'database' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'swoole',
// 用户名
'username' => 'root',
// 密码
'password' => 'root',
// 端口
'hostport' => '3306',
// 数据库表前缀
'prefix' => '',
// 是否需要断线重连
'break_reconnect' => true,
]
注册函数
use think\facade\Db;
//在initialize中注册
//数据库配置服务
$db_config= Config::getInstance()->getConf('database');
Db::setConfig($db_config);
//控制器中使用 其他的所有数据库操作和tp5.1一样
use think\facade\Db;
//模型中使用
use think\Model;
e.验证码使用
composer 下载地址
composer require easyswoole/verifycode=3.x
使用方式
use EasySwoole\VerifyCode\Conf;
EasySwoole\Utility\Random
$config = new Conf();
$code = new \EasySwoole\VerifyCode\VerifyCode($config);
//输出png图片
$this->response()->withHeader('Content-Type','image/png');
//利用easyswoole中的杂项 随机数来生成数字随机数
$num = Random::number(4); 4位随机数
$this->response()->write($code->DrawCode($num)->getImageByte());
//同时为了能够保证验证 所以我把验证码加密放在cookie中 进行验证
function setCodeCookie($num){
//加密字符
$salt = "demo";
//加密时间
$time = time();
//进行加密
$cookie1 = md5($num.$salt.$time);
$cookie2 = $time; 保证时间的一致性
//设置cookie数据 2个小时的有效期
$this->response()->setCookie('cookie1_name',$cookie1,time()+7200);
$this->response()->setCookie('cookie2_name',$cookie2,time()+7200);
}
//用户登录时的验证码验证
function getCodeCookie($code=null){
if(!$code){
return false;
}
//加密字符
$salt = 'demo';
//获取cookie 根据cookie的名称
$cookie1 = $this->request()->getCookieParams('cookie1_name');
$cookie2 = $this->request()->getCookieParams('cookie2_name');
//对比验证 返回结果
$cookie2 = md5($code.$salt.$cookie2);
if ($cookie1 == $cookie2){
return true;
}else{
return false;
}
}
f.图片上传 easyswoole 自带上传功能 直接使用即可 其他数据查找文档使用即可
//控制器使用方式
try{
$reqeust = $this->request();
$file = $reqeust->getUploadFile();//单个文件名称
$files = $reqeust->getUploadFiles();//多个文件名称
//文件名称
$name = $file->getClientFilename();
//文件移动
$file->moveTo('文件路径'.文件名称);
}catch(\Throwable $e){
$this->writeJson(400,$e->getMessage());
}