通过Composer进行安装(推荐) 记录一: 选择V**或者设置composer的镜像服务器 镜像用法: 有两种方式启用本镜像服务: • 系统全局配置: 即将配置信息添加到...或者composer create-project yiisoft/yii2-app-advanced yii2 2.0.12 会在当前目录生成一个yii2目录,这个就是 Yii2的advanced...下面我们点击下图中标记的位置进行下载 2、解压后拷贝advanced目录放到web可访问目录,文件名advanced,不做改动 3、如果你是类linux系统,切换到advanced目录执行...首先你需要在你的web服务器(apache或者nginx)上配置一台虚拟主机,其根目录指向这个目录 /xxx/....../advanced;配置好虚拟主机之后,你可以在浏览器的地址栏上输入 http://你配置的域名/frontend/web/ 看效果了,界面上显示一个大大的Congratulations即表示安装成功!
在 YII2 社区中安装 YII2 版本的讨论中,经常有一个 View asset 扩展安装的难题,核心就是前端页面元素与后端服务的耦合的问题,以及版本依赖的冲突。...API 简单概括 “现在我们使用 YII2,就是在使用它构建 API 的能力。...看一看 YII2 官方文档[2] 列出来的 YII2 关键组成,基本上很多已经退出常见的使用场景。 找到了一个介绍 YII2 微框架,为服务接口而设计的 使用 Yii 作为微框架[3], ?...PHP 可扩展性 关于 YII2 这款框架,有两个概念值得说明一下 “组件和模块 .YII2 的扩展性主要体现在组件(comments)的设计上 'components' => [ 'request...YII2-模块.png 如上图,passport 和 admin 两个模块,如果都涉及同一张 User 表,依据复制优于依赖的原则,没有必要公用一个 User 类,可以单独存放为两个 User 类,用命名空间做隔离
最近在使用yii2开发一个表单页面的时候,有多图上传的需求,稍微找了找这方面的组件,基本都安利fileInput这个组件,于是就尝试着使用这个库来完成后端表单页面的多图上传功能。...我们来看官方文档展示的几个常规操作: use kartik\widgets\FileInput // or 'use kartikile\FileInput' if you have only installed...> 我们在控制器配置好图片浏览的配置,传入进来。...} $dir = '/uploads/temp/'; //生成唯一uuid用来保存到服务器上图片名称...至于删除函数就不讲了,只要在浏览里配置上删除的url,也是一样的操作咯。
在项目实施过程中,往往把一个大项目进行分拆成几个独立的项目,项目用完全独立的域名和文件,可以放到不同的服务器上的独立分项目 yii2就可以这样进行 譬如 做一个电子商务系统, 1.产品,分类,首页使用域名...account.domain.com 3.购物车页面使用域名:cart.domain.com 4.下单页面使用域名:checkout.domain.com 分拆成4个域名子项目 这样就需要在二级域名之间进行session共享同步...在yii2中,本人测试过,可以通过设置 ini_set("session.cookie_domain","intosmile.es"); 在两个项目的index.php添加cookie_domain...,就可以进行session共享 两个完全独立的yii2是可以使用yii中的session读取的 注意配置 'request' => [ 'class' => 'common\web...,但是在其他机器上或者服务器上有问题,那么你需要检查 哈,ini_set("session.cookie_domain",'session.com');这个中的session.com中必须与你的域名 进行真实匹配
urlManager 如果要实现上面的url样子,我们必须进行url美化,这需要web服务器的支持(apache&nginx如何支持url重写可以参考 速查表),单单这样还不够,yii2提供了restful...这里要说明的参数是pluralize,在restful使用上一直存在两种观点,就是对于资源在url上的表现应该是单数还是复数问题,yii2默认是复数形式,如果你想使用单数可以将pluralize设置为false...album控制器的actionIndex,以此类推yii2提供了很多个内置的action识别,具体见下图 alt 当然具体如何实现的你可以参考 yii\rest\UrlRule.php 类及yii2的...是的,这是一个继承问题,如果你想让yii2支持restful,请将对应控制器继承到 yii\rest\ActiveController 上,最简单的一个具有restful资源操作能力的控制器如下图。...完事了 简单配置后,老沙搞定了服务器端的配置,接下来他计划使用小程序和yii2实现一个队相册列表的功能实现,下一篇告诉你。
当服务器端进行了存储后要生成一个key,将其返给小程序,以后小程序凡是发起需要用户认证的请求,都带这个key用来判断用户身份,在yii2中,这个key就是我们restful中的access_token。...以上是关于小程序登录的前后台逻辑,如果你使用yii2类框架,很多都内置了,并不复杂。 但是这里还有几个问题 小程序端何时进行登录逻辑? 发起请求时access_token过期了如何处理?...在登录判断上,我们先进行小程序是否含有access_token来判断,当然即便存在,还需要对checkSession进行一次判断。...服务器端 接下来总结下服务器端,我使用yii2的restful组件作为接口支持,关于restful的基本功能请参考yii2官方文档或我之前录制的课程《Yii2的RESTful讲解》,在这里分享我认为关键的点...让yii2能解析json的请求内容 默认情况下yii2并不能识别请求中的json格式,而我们小程序在发起请求时喜欢用它,因此我们要对yii2进行一下配置。
(非Yii2方法) 如下: 访问index方法时,datetime字段会被格式为"Y-m-d H:i:s"格式, 访问xls方法时,datetime字段会被格式为"Y年m月d日"格式, 匿名函数中的...控制器和视图中所用的字典类,获取数据的方法都应写到Model里。...在backend/modules/test/models/TestSearch.php中 配置好search方法,根据需求来确定字段搜索是like还是=或者其他。...可参考Yii2的yii\db\Query的 andFilterWhere等方法和操作符格式 andFilterWhere可放心使用,搜索时字段非空才会执行。...按照业务需求设置好字段的表单控件和验证规则 backend\modules\test\views\default_form.php 表单元素为必填项的在lable上的class加上form-required
就算是最新的浏览器此方法也不是绝对可用的,这涉及了用户的隐私,很多用户会设置浏览器不提供Referer,因此服务器在得不到Referer的情况下不能贸然的决绝服务,有可能这是一个合法请求。...在HTTP头部增加属性 这个方法在思路上和上面的token方式一样,只不过将token放到了HTTP头部中,不再参数传递,通过XMLHttpRequest类可以一次性的给所有请求加上csrftoken这个...Yii2 首先要说的是每种CSRF防范措施都有其弊端,无论你的防范多么严密,黑客拥有更多的攻击手段,因此在重要逻辑上(必须写入和删除)必须非常小心,接下来我们把yii2框架在csrf上的部署说一下。...在CSRF这块,yii2框架采取了HTTP头部和参数token并行的方式,针对于每个请求,在beforeAction都会做一次判断,如下 // vendor/yiisoft/yii2/web/Controller.php...getCsrfToken() 生成具体的csrfToken,就是你在表单隐藏域中看到的那个值,这个值将来会传到服务器和真实的csrfToken进行对比,验证是否合法。
保证PHP项目本地和服务器环境一致,避免出现一系列的问题。 目前解决这种问题最佳的方法有Docker(生产环境line)、Vagrant(用于开发环境dev)。...Homestead 是包含了Nginx Web服务器、PHP7、MySQL、Postgres、Redis、Memcached、Node,以及所有你在使用 Laravel 开发时需要用到的各种软件(Homestead...192.168.33.10" 效果 http://192.168.199.101/ 或者 http://192.168.199.101:80/ http://192.168.199.101:8888/ 共享目录...fastcgi_pass 127.0.0.1:9000; try_files $uri =404; } } 在主机的...sudo vim /ect/hosts 192.168.33.10 tp5.vagrant.com yii2.vagrant.com laravel.vagrant.com 访问 优化 虚拟机主机名
进程内 跨进程 跨主机 Lock/Monitor、SemaphoreSlim Metux、Semaphore 分布式锁 用户态线程安全 内核态线程安全 单机服务器可以通过共享某堆内存来标记上锁/解锁...,线程同步说到底是建立在单机操作系统的用户态/内核态对共享内存的访问控制。...而分布式服务器不是在同一台机器上:跨主机,因此需要将锁标记存储在所有机器进程都能看到的地方。 在开发很多业务场景会使用到锁,例如库存控制,抽奖等。...解读分布式锁 我们常说的线程安全、线程同步方案,包括此次的分布式锁都是基于 “多线程/多进程对特定共享资源同时有更新操作”。 ?...第3、4点是为了解决 :“锁提前过期,客户端A还没有执行完,然后客户端B获取了锁,这时客户端A执行完了,会不会在删锁的时候把B的锁给删掉” -- 4是3技术上的推荐实现。
前言 大家可以从任何一个gii生成model类开始代码上溯,会发现:yii2的model层基于ActiveRecord实现DAO访问数据库的能力。...上述实现决定了只能连接了1台数据库服务器,选择了其中1个database,那么具体访问哪个表,是通过在Model里覆写tableName这个static方法实现的,ActiveRecord会基于覆写的tableName...3)M库N表:1库N表逐渐发展,单机存储和性能达到瓶颈,只能将数据分散到多个服务器存储,于是提出了分库的需求。...$table; } 在分表逻辑基础上稍作改造,即可实现分库。...假设分8张表,那么分别是00,01,02,03…07,然后决定分4个库,那么00,01表在00库,02,03表在01库,04,05表在02库,06,07表在03库,根据这个规律对应的计算代码如上。
经常有人问yii2的GridView配置问题,最近群里也有人问到,我想是时候发布一个教程了。 我们采用的是yii2.0.14版本,为了学习方便,以问答式书写。...小谈yii2中3个数据提供者及与GridView的搭配使用 在学习GridView挂件之前,我们需要先了解GridView的结构,看下图。 [163fd106d152501b?...在A6中我们说GridView的列有一个footerOptions属性,那么这个属性是干嘛用的那?从单词上分析是控制列footer的属性(比如样式等等),但是footer在哪里???在哪里在哪里?...footerRowOptions是GridView的属性,它控制着tfoot的tr标签属性,简单点说,你最后在tfoot上每个单元格看到的效果是footerRowOptions + footerOptions...RadioButtonColumn SerialColumn 通过GridView可以设置一列的默认类型,当然你可以针对特殊的类单独指定其class。
阅读本篇文章您将了解到以下内容 MongoDB中Update操作定义 MongoDB中SQl更新使用描述 MongoDB中操作符使用描述 相关代码示例 基础环境 PHP 7.2.18 ThinkPhp5/YII2...// 服务器地址 // 服务器地址 'hostname' => '', // 数据库名 'database' => 'dbname',..., // 端口 'hostport' => '10000', //可修改 引用包 use think\Db; 常规数据更新场景,查询是否存在并插入 数据模型类EpayMonitorReportModel...db.discussion.update( { 'discussion_id': discussion_id }, { '$push': { 'comments': { 'posted': datetime.utcnow...我们在开发过程中,可以通过具体的场景选择合适的操作符。
名称 默认 描述 主机,服务器,数据源,数据源,地址,地址,网络地址 本地主机 要连接的MySQL服务器的主机名或网络地址。可以在逗号分隔的列表中指定多个主机。...在类Unix系统上,这可以是MySQL套接字文件的完全限定路径,这将导致使用Unix套接字而不是TCP / IP套接字。只能指定一个套接字名称。...如果MySQL用户帐户仅具有服务器上特定数据库的访问权限,则可能需要这样做。 协议,ConnectionProtocol,连接协议 插座 如何连接到MySQL服务器。...在Windows上,大于0的值是在发送第一个keepalive数据包之前的空闲连接时间(以秒为单位)。由于.NET Core的限制,基于Unix的操作系统将始终使用操作系统默认保持活动设置。...SharedMemoryName,共享内存名称 真正 共享内存(在Windows上)不支持作为连接协议。 SqlServerMode,Sql Server Mode 假 不支持。
// // 返回结果: // 以指定模式打开的指定路径上的 System.IO.FileStream,具有读/写访问权限并且不共享。...// // 返回结果: // 一个非共享的 System.IO.FileStream,它提供对指定文件的访问,并且具有指定的模式和访问权限。...System.IO.FileStream,具有指定的读、写或读/写访问模式以及指定的共享选项。...// // 返回结果: // 指定路径上的 System.IO.FileStream,具有指定的读、写或读/写访问模式以及指定的共享选项。...// // 返回结果: // 具有 System.IO.FileAccess.Write 访问权限的指定路径上的非共享 System.IO.FileStream
打开并配置conf/zabbix_agentd.conf 里面的配置比较详细 LogFile=c:\zabbix_agentd.log EnableRemoteCommands=1 #允许在本地执行远程命令...执行过程:proxy 收集到数据之后,首先将数据缓存在本地,然后在一定得时间之后传递给 zabbix server,这样就不会因为服务器的任何临时通信问题而丢失数据。 如何选择proxy模式?...我们这里采用共享秘钥(PSK)方式加密通信: #共享密钥一致性 共享密钥身份字符串 如:ZABBIXPROXY #共享密钥(PSK) 共享密钥(16进制) #使用openssl生成psk密钥并将生成的...30) #解析返回的json x = json.loads(result) print x["errmsg"] if x["errcode"] == 0: f.write("\n"+str(datetime.datetime.now...())+" "+str(username)+" "+"发送成功"+"\n"+str(text)) f.close() else: f.write("\n"+str(datetime.datetime.now
零、初体验 新建控制台程序,名称为:MyFirstEF 在NuGet中搜索 Entity Framework,如下图: ?...3.创建 Blog 类: public class Blog { public int Id { get; set; } public string Name { get; set; } public...string Url { get; set; } public DateTime?...get; set; } public double Double { get; set; } public float Float { get; set; } } 4.创建一个继承自EF上下文的类,...注:如果未找到或无法访问服务器的错误,则说明你本地vs未安装LocalDB数据库,这时你可以安装LocalDB数据库,或者在App.config中将连接字符串修改为SQL Server 数据库的地址。
打开并配置conf/zabbix_agentd.conf 里面的配置比较详细 LogFile=c:\zabbix_agentd.log EnableRemoteCommands=1 #允许在本地执行远程命令...zabbix server,这样就不会因为服务器的任何临时通信问题而丢失数据。...我们这里采用共享秘钥(PSK)方式加密通信: #共享密钥一致性 共享密钥身份字符串 如:ZABBIXPROXY #共享密钥(PSK) 共享密钥(16进制) #使用openssl生成psk密钥并将生成的...30) #解析返回的json x = json.loads(result) print x["errmsg"] if x["errcode"] == 0: f.write("\n"+str(datetime.datetime.now...())+" "+str(username)+" "+"发送成功"+"\n"+str(text)) f.close() else: f.write("\n"+str(datetime.datetime.now
诸如文件未找到或无法启动服务的运行时错误可能表示需要共享驱动器。 (另请参见卷安装需要Linux容器的共享驱动器。)...共享驱动程序的防火墙规则 共享驱动器需要在主机和运行Linux容器的虚拟机之间打开端口445。...注意:在Docker for Windows Beta 29及更高版本中,Docker检测端口445是否关闭,并在尝试添加共享驱动器时显示以下消息: 要共享驱动器,请允许Windows主机与Windows...您不需要在任何其他网络上打开445端口。 默认情况下,允许从10.0.75.2(虚拟机)连接到10.0.75.1端口445(Windows主机)。...DNS服务器 - 您可以将DNS服务器配置为使用动态或静态IP寻址。 注意:有些用户报告在Docker for Windows稳定版本上连接Docker Hub的问题。
领取专属 10元无门槛券
手把手带您无忧上云