thinkphp5

thinkphp5集成GatewayWorker

元气小坏坏 提交于 2020-03-31 05:46:27
Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架,而GatewayWorker则是基于Workerman开发的一个长连接框架,支持分布式部署,支持全局广播或者向任意客户端推送数据,作为快速开发TCP长连接应用非常方便; 说明,本文主要通过手动安装GatewayWorker扩展,因此拷贝vendor下的核心代码即可。暂不提供composer安装说明 第一步:下载GatewayWorker(Fork地址 https://github.com/walkor/gatewayworker) 第二步:将GatewayWorker文件夹中的“GatewayWorker\vendor\”下“Workerman”放入tp5项目extend目录 第三步:添加入口文件 在项目根目录 新增启动服务文件server.php,用于在cli模式下运行tp 关键代码:   ini_set('display_errors', 'on');   if(strpos(strtolower(PHP_OS), 'win') === 0){     exit("start.php not support windows.\n");   }   // 检查扩展   if(!extension_loaded('pcntl')){     exit("Please install pcntl

TP5整合 WorkerMan 以及 GatewayWorker

有些话、适合烂在心里 提交于 2020-03-29 07:23:24
TP5整合GatewayWorker Windows版安装 a)使用composer create-project topthink/think testTG,来安装thinkphp5. b)进入thinkphp5的目录,此处为testTG,使用composer require workerman/gateway-worker-for-win 安装Windows版本的gateway。 c)去官网下载Windows版的gateway-worker,里面有demo。http://www.workerman.net/download d)将下载的压缩包解压,将Applications/Yourapp中的文件全部复制到thinkphp5目录application里面的任意文件夹,这里取名为push。 e)将解压后的文件夹中的start_for_win.bat复制到thinkphp5的根目录,即与application同级的目录。 f)右键start_for_win.bat,点编辑,将里面的目录改成自己的目录,这里改为 php application\push\start_register.php application\push\start_gateway.php application\push\start_businessworker.php Pause g)保存退出。双击运行。

Thinkphp5模型的查询

霸气de小男生 提交于 2020-03-29 07:00:50
查询单个数据 取出主键为1的数据 $user = User::get(1); echo $user->name; // 使用数组查询 $user = User::get(['name' => 'thinkphp']); // 使用闭包查询 $user = User::get(function($query){ $query->where('name', 'thinkphp'); }); echo $user->name; 实例化后调用find方法 $user = new User(); // 查询单个数据 $user->where('name', 'thinkphp') ->find(); 查询多条数据 // 根据主键获取多个数据 $list = User::all('1,2,3'); // 或者使用数组 $list = User::all([1,2,3]); foreach($list as $key=>$user){ echo $user->name; } // 使用数组查询 $list = User::all(['status'=>1]); // 使用闭包查询 $list = User::all(function($query){ $query->where('status', 1)->limit(3)->order('id', 'asc'); }); foreach(

thinkphp5中Indirect modification of overloaded element of XXX has no effect的解决办法

人盡茶涼 提交于 2020-03-27 04:13:18
最近在使用Thinkphp5做foreach循环嵌套的时候报错:Indirect modification of overloaded element of XXX has no effect,网上搜索了一下,很多框架会报这个错误,比如Laravel、YII、Thinkphp5等,错误的直译意思为:间接修改XXX的重载元素没有效果。解决办法是设置一个中间变量。 $list = $score->getDetail($eid,$uid,'to');//获取数据 if(!empty($list)){ foreach($list as $key => $value){ $list[$key]['name'] = UserM::where('id',$value['fromid'])->value('name'); $info = json_decode($value['info'],true);//定义一个中间变量,操作这个变量,结果赋值给$list[$key]['info'] foreach($info as $k =>$i){ $info[$k]= ItemM::where('id',$k)->value('name').':'.$i.'分;&nbsp '; } $list[$key]['info'] = $info; } } 来源: https://www.cnblogs.com

Nginx下ThinkPHP5的配置方法详解

早过忘川 提交于 2020-03-23 05:11:27
url里public目录的隐藏 出于安全的考虑,TP5的入口文件改成放在public下了,因为这样的话能防止被恶意用户访问到“/thinkphp/”、“/vendor/”等等这些目录下的文件。所以当你以之前的习惯将网站documentroot配置为项目根目录的时候就会需要在url后面加上/public/来访问。当然可能也会有童鞋把入口文件放回到根目录下,然后还是以之前3.x版那样的形式访问了。 但是很显然,这么做并不是那么的科学。 假设项目目录为“/web/wwwroot/augsky.com”,那么我们在网站的nginx配置文件里面将root配置为: root /web/wwwroot/augsky.com/public; 但是一定要记得将open_basedir设置为上一级项目的根目录下,不然应用会没有权限调用除public目录下的其他文件,网站会报500无法访问。(open_basedir的配置默认在php.ini里面,但如果是多个虚拟机环境的话有可能会在各个网站的user.ini文件里,这个要根据自己的实际情况来。)具体配置如下: open_basedir=/web/wwwroot/augsky.com:/tmp/:/proc/ 隐藏入口文件index.php: location / { try_files $uri $uri/ /index.php?s=$uri&

Thinkphp5多数据库切换

半腔热情 提交于 2020-03-12 04:42:11
在项目开发中需要Thinkphp5读取多个数据库的数据,本文详细介绍Thinkphp5多数据库切换 一、在database.php配置默认数据库连接 'type' => 'mysql', 'hostname' => '服务器IP地址', 'database' => '数据库名', 'username' => '用户名', 'password' => '密码', 'hostport' => '数据库端口', 二、在config.php配置第二个数据库连接 'DB_Config_1'=>[ 'type' => 'mysql', 'hostname' => '服务器IP地址', 'database' => '数据库名', 'username' => '用户名', 'password' => '密码', 'hostport' => '数据库端口' ], 三、多数据库使用 //默认数据库读取数据 $test = Db::name("test")->select(); //第二个数据库读取数据 $test1=Db::connect("DB_Config_1")->name("test")->select(); 在项目开发中需要Thinkphp5读取多个数据库的数据,本文详细介绍Thinkphp5多数据库切换 一、在database.php配置默认数据库连接 'type' => 'mysql',

Thinkphp5多数据库切换

旧城冷巷雨未停 提交于 2020-03-05 14:28:03
在项目开发中需要Thinkphp5读取多个数据库的数据,本文详细介绍Thinkphp5多数据库切换 一、在database.php配置默认数据库连接 'type' => 'mysql', 'hostname' => ' 服务器 IP地址', 'database' => '数据库名', 'username' => '用户名', 'password' => '密码', 'hostport' => '数据库端口', 二、在config.php配置第二个数据库连接 'DB_Config_1'=>[ 'type' => 'mysql', 'hostname' => '服务器IP地址', 'database' => '数据库名', 'username' => '用户名', 'password' => '密码', 'hostport' => '数据库端口' ], 三、多数据库使用 //默认数据库读取数据 $test = Db::name("test")->select(); //第二个数据库读取数据 $test1=Db::connect("DB_Config_1")->name("test")->select(); 在项目开发中需要Thinkphp5读取多个数据库的数据,本文详细介绍Thinkphp5多数据库切换 一、在database.php配置默认数据库连接 'type' => 'mysql

thinkphp5 的model层

混江龙づ霸主 提交于 2020-03-01 16:28:42
thinkphp3.2与thinkPHP5.0的区别 一、thinkphp3.2与thinkPHP5.0不同之处 5.0版本和之前版本的差异较大,本篇对熟悉3.2版本的用户给出了一些5.0的主要区别。 模块和控制器 控制器的命名空间有所调整,并且可以无需继承任何的控制器类。 应用命名空间统一为app(可定义)而不是模块名; 控制器的类名默认不带Controller后缀; 控制器操作方法采用return方式返回数据 而非直接输出; 废除原来的操作前后置方法; 支持任意层次的控制器定义和访问; URL访问支持自动定位控制器; 数据库 5.0的数据库查询功能增强,原先需要通过模型才能使用的链式查询可以直接通过Db类调用,原来的M函数调用可以改用db函数,例如: 3.2版本 M(‘User’)->where([‘name’=>’thinkphp’])->find(); 5.0版本 db(‘User’)->where(‘name’,’thinkphp’)->find(); 主要改进如下: 支持链式查询操作; 数据查询支持返回对象、数组和PDOStatement对象; 数据集查询支持返回数组和Collection对象; 增加查询构造器,查询语法改变; 支持闭包查询; 支持分块查询; 支持视图查询; 增加SQL监听事件; 模型 5.0的模型变化是最大的,基本上模型是完全面向对象的概念

ThinkPHP5无限循环输出无限分类【方案二】

拈花ヽ惹草 提交于 2020-03-01 09:13:50
数据库设计 DROP TABLE IF EXISTS `think_category`; CREATE TABLE `think_category` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '分类ID', `pid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '上级分类ID', `name` varchar(50) NOT NULL COMMENT '分类名称', `type` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '分类类型 1 列表 2 单页', `sort` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '排序', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) USING BTREE ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='分类表'; 模型 public function getLevelList() { $category_level = $this->order(['sort' => 'DESC', 'id'

thinkphp5 的 nginx 配置文件

人走茶凉 提交于 2020-02-28 13:41:44
今天在tp5高级群遇到人询问tp5支持pathinfo的nginx配置怎么写的问题, 发了一份配置文件给管理员共享在群里面了。 不过那份文件里面没有做一些说明, 所以这里做一下解释。 首先我们假定几个条件: 1,配置文件使用vhost方式,如果单主机的酌情修改; 2,假定配置的域名是 mydomain.vm; 3,假定用户使用的是 linux 操作系统; 4,假定项目文件部署在 /app/www/mydomain.vm 目录下; 5,假定 nginx 的日志放在 /app/logs/nginx 目录下。 下面是配置文件的具体内容: server { listen 80 ; server_name mydomain.vm www.mydomain.vm ; access_log /app/logs/nginx/mydomain_access.log ; error_log /app/logs/nginx/mydomain_error.log ; set $root /app/www/mydomain.vm/public ; location ~ .*\. ( gif | jpg | jpeg | bmp | png | ico | txt | js | css ) $ { root $root ; } location / { root $root ; index index