Yii

YII Framework学习教程-YII的路由

 ̄綄美尐妖づ 提交于 2020-04-06 22:37:06
http://www.localyii.com/testwebap/index.php?r=testmod/default/index。 根据以前的知识,我们知道此url是访问的testmod module的default controller下的index action。对应的存储路径是: view plain ├── protected │ ├── modules │ │ └── testmod │ │ ├── components │ │ ├── controllers │ │ │ └── DefaultController.php │ │ ├── messages │ │ ├── models │ │ ├── TestmodModule.php │ │ └── views │ │ ├── default │ │ │ └── index.php 这里我们把testmod/default/index叫做路由。 注意: 默认情况下,路由是大小写敏感的,从版本 1.0.1 开始,可以通过设置应用配置中的CUrlManager::caseSensitive 为 false 使路由对大小写不敏感。当在大小写不敏感模式中时, 要确保你遵循了相应的规则约定,即:包含控制器类文件的目录名小写,且 控制器映射 和 动作映射 中使用的键为小写。 有时候我们可能需要自己定义url

YII 中使用 Expression解决查询中带有常量报错的问题

北战南征 提交于 2020-04-05 18:01:41
Yii 官方手册关于 Expression 的解释: https://www.yiichina.com/doc/api/2.0/yii-db-expression Expression 表示不需要转义或引用的 DB 表达式。 当表达式对象嵌入到 SQL 语句或片段时, 它将替换为 $expression 属性值,而不进行任何的 DB 转义或引用。 例如, $expression = new Expression('NOW()'); $now = (new \yii\db\Query)->select($expression)->scalar(); // SELECT NOW(); echo $now; // prints the current date 表达式对象主要用于将原始 SQL 表达式传递给yii\db\Query, yii\db\ActiveQuery 和相关类的方法。 问题: 当我们需要使用一个常量作为查询字段的时候,使用下面的写法,运行会报错: User::find()->select(['id', '0 as is_constant'])->asArray()->all() Database Exception – yii\db\Exception SQLSTATE[42S22]: Column not found: 1054 Unknown column '0'

YII2控制器与路由

早过忘川 提交于 2020-03-28 23:22:42
控制器以 Controller 作为后缀,继承自 yii\web\Controller ; 动作以 action 作为前缀,public访问修饰; 控制器ID 类名去后缀,全部转为小写,如果是驼峰命名多个单词转为中杠分割; 动作ID 去前缀,全部转为小写,如果是驼峰命名多个单词,转为中杠分割; 路由如何指向动作: 控制器ID/动作ID URL访问规则: index.php?r=路由 传参使用 &参数=值 的方式 默认路由 site 定义在 yii\web\Application::$defaultRoute 或 yii\base\Module::$defaultRoute 默认动作ID index 定义在 yii\base\Controller::$defaultAction 1.新建一个FooBarController.php <?php namespace app\controllers; use yii\web\Controller; class FooBarController extends Controller { public function actionUserInfo() { return '控制器ID是:foo-bar,动作ID是:user-ino'; } } 浏览器访问: URL生成 Url帮助类工作方式演示 use yii\helpers\Url; //

Laravel6实现第三方 微信登录

帅比萌擦擦* 提交于 2020-03-25 12:10:57
3 月,跳不动了?>>> 目前很多的网站中都会存在很多的交互功能,从而降低用户的操作难度,特此带来微信的第三方登录的项目实战功能开发。对于本实例中的开发内容,就不在使用原生的内容,而是直接使用别人写好的封装的类库。 1. 安装 laravel/socialite composer require laravel/socialite 2). 在你的 config/app.php 文件中添加以下配置信息 'providers' => [ Laravel\Socialite\SocialiteServiceProvider::class, ], 'aliases' => [ 'Socialite' => Laravel\Socialite\Facades\Socialite::class, ], 2. 安装 socialiteProviders/weixin 1). 直接运行以下命令安装扩展包 composer require socialiteproviders/weixin 2). 在你的 config/app.php 文件中添加以下配置信息 'providers' => [ \SocialiteProviders\Manager\ServiceProvider::class, ], 3). 在你的 app/Providers/EventServiceProvider.php

linux下查看php-fpm是否开启?如何开启?

吃可爱长大的小学妹 提交于 2020-03-24 14:26:21
3 月,跳不动了?>>> 1、查看php-fpm是否开启 命令:ps -ef|grep php 结果如下: 这是没有开启。 2、查看php-fpm的位置 命令:whereis php-fpm 3、开启php-fpm 命令:/usr/local/bin/php-fpm 4、再次输入命令ps -ef|grep php,查看是否已经开启 这是已经开启了。 以上内容希望帮助到大家, 很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家 , 需要请戳这里 来源: oschina 链接: https://my.oschina.net/u/4234147/blog/3210135

TCP与UDP的区别究竟在哪

梦想与她 提交于 2020-03-23 16:16:16
3 月,跳不动了?>>> TCP的优点 : 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。 TCP的缺点 : 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。 UDP的优点 : 快,比TCP稍安全 UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击…… UDP的缺点 : 不可靠,不稳定 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。 基于上面的优缺点,那么: 什么时候应该使用TCP: 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用。 比如HTTP、HTTPS、FTP等传输文件的协议

php使用redis的有序集合zset实现延迟队列

梦想与她 提交于 2020-03-21 16:34:34
3 月,跳不动了?>>> 延迟队列就是个带延迟功能的消息队列,相对于普通队列,它可以在指定时间消费掉消息。 延迟队列的应用场景: 1、新用户注册,10分钟后发送邮件或站内信。 2、用户下单后,30分钟未支付,订单自动作废。 我们通过redis的有序集合zset来实现简单的延迟队列,将消息数据序列化,作为zset的value,把消息处理时间作为score,每次通过zRangeByScore获取一条消息进行处理。 <?php class DelayQueue { protected $prefix = 'delay_queue:' ; protected $redis = null ; protected $key = '' ; public function __construct ( $queue , $config = []) { $this -> key = $this -> prefix . $queue ; $this -> redis = new Redis (); $this -> redis -> connect ( $config [ 'host' ], $config [ 'port' ], $config [ 'timeout' ]); $this -> redis -> auth ( $config [ 'auth' ]); } public function

Yii2.0中文开发向导——高级应用程序模板

会有一股神秘感。 提交于 2020-03-20 21:19:20
高级应用程序模板 这个模板用在大型的团队开发项目中,而且后台从前台独立分离出来以便于部署在多个服务器中。由于YIi2.0的一些新的特性,这个程序模板的功能要更深一点。提供了基本的数据库的支持,注册、密码找回等功能。 安装 可以通过Composer来安装 如果没有安装Composer,先安装 curl -s http://getcomposer.org/installer | php 然后用如下命令来获取 php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-advanced /path/to/yii-application 也可以直接下载压缩文件 https://github.com/yiisoft/yii2/tree/master/apps/advanced 开始 安装完成后,需要对其进行初始化操作。 执行 init ,选择开发环境( dev ) php /path/to/yii-application/init 复制代码 创建新的数据库,设置 common/config/main-local.php 里的 components.db 数据库信息 使用控制台命令迁移数据库 yii migrate 复制代码 设置web服务器的根目录 前台 /path/to/yii

yii学习笔记--url解析

青春壹個敷衍的年華 提交于 2020-03-19 04:53:53
  在通过yiic命令生成了一个app之后,我们通过浏览器访问会看到这样的一个页面。   点击home时,url为:http://localhost/blog/index.php?r=site/index   点击about时,url为:http://localhost/blog/index.php?r=site/page&view=about   但是,实际上他们都对应于不同的脚本。app 在一个名叫 urlManager 的应用组件的帮助下,决定请求的控制和动作,以上的两个请求都对应于同一个控制器site,我们可以在/protected/controllers/ 目录下找到控制器:SiteController.php(如下), class SiteController 继承于 Controller,在SiteController里面会定义处理请求的动作方法,比如function actionIndex () {};他用于处理 url为: http://localhost/blog/index.php?r=site/index 这个请求。而对于 url为: http://localhost/blog/index.php?r=site/page&view=about,我们并未找到 function actionPage () {};而且我们可以看到与其他url不同的是

套接字Socket的常见面试题及答案

笑着哭i 提交于 2020-03-18 17:05:33
某厂面试归来,发现自己落伍了!>>> 1. 对套接字编程的理解,它的协议是如何的? socket通常称为“套接字”,用于描述IP地址和端口,是一个通信链的句柄。应用程序通过套接字向网络发出请求或应答网络请求。 服务器和客户端通过socket进行交互。服务器需要绑定在本机的某个端口号上,客户端需要声明自己连接哪个地址的哪个端口,这样服务器和客户端就能连接了。 根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。 (1)服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。 (2)客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。 (3)连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。 socket是对TCP/IP协议的封装和应用。在TCP/IP协议中,TCP协议通过三次握手建立一个可靠的连接。 第一次握手