Yii

如何在指定的动作中加载 Yii-bootstrap 扩展

橙三吉。 提交于 2020-04-22 04:20:29
我在使用 Yii-Bootstrap extension 时遇到了个大问题,由于预加载机制使所有的 AJAX 请求都会初始化 bootstrap。这是资源的极大浪费,尤其是使用基于 AJAX 的文件上传工具拆分大文件上传时,会初始化 bootstrap 上百次。 我最终是禁用了预加载而使用过滤器来加载bootstrap 禁用 bootstrap 预加载: /protect/config/main.php 'preload'=>array( //'bootstrap', 'log' ), 创建文件: /protected/extensions/bootstrap/filters/BootstrapFilter.php <?php class BootstrapFilter extends CFilter { protected function preFilter() { Yii::app()->getComponent("bootstrap"); return true; } } 然后在控制器中,新增 bootstrap 过滤器 public function filters() { return array( 'accessControl', 'postOnly + delete', array('ext.bootstrap.filters.BootstrapFilter -

YIi批量插入

与世无争的帅哥 提交于 2020-04-21 15:36:24
第一种方案 $model=new User(); foreach($data as $attributes){ $_model=clone $model; $_model->setAttributes($attributes); $_model->save(); } 第二种方案 $model=new User(); foreach($data as $attributes){ $model->isNewRecord=true; $model->setAttributes($attributes); $model->save()&&$model->id=0; } Yii2.0批量插入: (推荐使用这种方案) Yii::$app->db->createCommand()->batchInsert(UserModel::tableName(), ['user_id','username'], [ ['1','test1'], ['2','test2'], ['3','test3'], ])->execute(); 如果封装的sql数据过多 ERROR 1406 : Data too long for column 解决办法 解决方案 1 在my.ini里找到 sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_Create_USER,NO_ENGINE

fecmall国内版本】Fecyo-1.6.0版本发布

强颜欢笑 提交于 2020-04-21 00:08:06
【fecmall国内版本】Fecyo-1.6.0版本发布,进行了如下的更新 详细参看官网帖子: Fecyo-1.6.0版本发布 1.用户收款后的订单状态,由 Yii::$service->order->status_completed 改为: Yii::$service->order->status_received 。 2.后台添加备货订单导出 3.添加:收货订单,在线退款流程 用户订单收货后,如果产品存在问题,可以在线发起退货请求 3.1用户,在账户中心,订单管理部分,发起退货请求 提交订单产品退货 3.2管理员后台接受进行进行审核 审核通过后,用户在退款管理进行退货产品发货操作。 3.3用户退货产品发货 3.4商户收货后,进行确认 3.5商家手动退款(微信支付宝都支持原理返回退款,手动操作),操作完成后,更改退货状态 3.6用户可以看到退货状态的变化 4.fecyo优惠券部分的bug处理 详细参看帖子: http://www.fecmall.com/topic/4076 来源: oschina 链接: https://my.oschina.net/fancyecommerce/blog/3286400

分布式消息队列应用场景之异步处理、应用解耦、流量削锋和消息通讯理解分析

你说的曾经没有我的故事 提交于 2020-04-20 11:07:37
摘要:消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,Kafka等。 消息队列应用场景 以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。 1.异步处理 场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种1.串行的方式;2.并行方式。 (1)串行方式:将注册信息持久化后,发送注册邮件,再发送注册短信。三个业务全部完成后,返回给客户端。 (2)并行方式:将注册信息持久化后,发送注册邮件的同时,发送注册短信。三个业务全部完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间。 假设三个业务节点每个使用100毫秒钟,不考虑其他开销,则串行方式的时间是300ms,并行的时间可能是200毫秒。则串行的方式1秒内可处理3次请求,并行方式1秒内可处理5次请求,综上所述,传统的方式系统的性能(并发量,吞吐量,响应时间)会有瓶颈。如何解决这个问题呢? 引入消息队列,将不是必须的业务逻辑,异步处理。如下图所示 按照上图,用户的响应时间相当于是注册信息写入数据库的时间和将消息插入消息队列,也就是105毫秒。注册邮件,发送短信消息写入队列后,直接返回

分布式消息队列应用场景之异步处理、应用解耦、流量削锋和消息通讯理解分析

一笑奈何 提交于 2020-04-20 10:51:35
摘要:消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,Kafka等。 消息队列应用场景 以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。 1.异步处理 场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种1.串行的方式;2.并行方式。 (1)串行方式:将注册信息持久化后,发送注册邮件,再发送注册短信。三个业务全部完成后,返回给客户端。 (2)并行方式:将注册信息持久化后,发送注册邮件的同时,发送注册短信。三个业务全部完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间。 假设三个业务节点每个使用100毫秒钟,不考虑其他开销,则串行方式的时间是300ms,并行的时间可能是200毫秒。则串行的方式1秒内可处理3次请求,并行方式1秒内可处理5次请求,综上所述,传统的方式系统的性能(并发量,吞吐量,响应时间)会有瓶颈。如何解决这个问题呢? 引入消息队列,将不是必须的业务逻辑,异步处理。如下图所示 按照上图,用户的响应时间相当于是注册信息写入数据库的时间和将消息插入消息队列,也就是105毫秒。注册邮件,发送短信消息写入队列后,直接返回

PHP 使用分页方法修改多数据字段

谁说胖子不能爱 提交于 2020-04-19 14:43:01
这个标题听起来很别扭,需求是这样的。mysql中的customer表有5000条数据。现在要给customer表添加一个order_num 字段,客户每下单一次就update这个字段+1. 是的,新增加的字段只要之后客户完成下单就会+1,问题是,之前客户下过多少单子,也要同步到order_num。 所以,思路就是这样的。如果一次取出5000的客户,循环每一个客户在去order表查找订单个数。估计set_time_limit就超时了,然后呢,想起了php的分页请求,等一个limit 分页大小的数据请求修改完成后,在分页请求下一页的数据进行修改。 伪代码: $page = isset ( $_GET ["page"])? $_GET ["page"]:''; # 当前第N分页 if (! $page ){ $page =1 ; } echo "当前第{ $page }页<hr>" ; $pageSize =3; # 分页大小 $offset = $page ==1?0:( $page -1)* $pageSize ; # 当前offset sleep (5); # 睡眠5秒,模拟后台程序执行 echo "select * from customer where 1=1 limit { $pageSize } offset { $offset } <hr>" ; if ( $page *

PHP7的一些特性用法

跟風遠走 提交于 2020-04-18 11:38:18
1.use的用法 <?php // PHP 7 之前版本用法 use some\namespace\ClassA; use some\namespace\ClassB; use some\namespace\ClassC as C; use function some\namespace\fn_a; use function some\namespace\fn_b; use function some\namespace\fn_c; use const some\namespace\ConstA; use const some\namespace\ConstB; use const some\namespace\ConstC; // PHP 7+ 用法 use some\namespace\{ClassA, ClassB, ClassC as C}; use function some\namespace\{fn_a, fn_b, fn_c}; use const some\namespace\{ConstA, ConstB, ConstC}; ?> 2.序列号函数unserialize的新增了过滤功能 // 转换对象为 __PHP_Incomplete_Class 对象 $data = unserialize($foo, ["allowed_classes" => false])

Yii2框架请求慢

非 Y 不嫁゛ 提交于 2020-04-17 21:36:31
修改入口文件: defined('YII_DEBUG') or define('YII_DEBUG', false); defined('YII_ENV') or define('YII_ENV', 'prod'); 修改连接数据库配置: 链接数据库的host如果写的是localhost 改成127.0.0.1 来源: oschina 链接: https://my.oschina.net/boringblue/blog/3270502

【Yii从0到1】yii2学习笔记----安装Yii及基本数据渲染

不问归期 提交于 2020-04-11 19:53:09
前两天面试一个公司,对方要求会Yii2,我当时就蒙蔽了,因为没用过也不太会,所以就想学习一下这个框架,这就开始了~ 首先下载安装部分,如下两种方法: 1.composer安装: composer create-project --prefer-dist yiisoft/yii2-app-basic basic 安装成功以后直接访问basic/web目录即可; 2通过官网链接访问下载: https://www.yiichina.com/download 在Yii Framework中文网官方网站导航栏下载一栏里面,往下拖找到 基本应用模板 点击下载 可能会有部分人报错,接下来将下载的代码用编辑器打开,接着打开根目录下的config/web.php文件,找到 cookieValidationKey 键所对应的值, 将其填写一个任意值就成;最后刷新页面,如下图表示安装成功; 做一个小测试, 当前默认生成SiteController.php文件,在Yii当中,所有的方法名都要带上action的前缀,框架自动解析生成各个操作(就把他当成在tp或者laravel里面的方法名前面都要加上一个action的前缀), 例如文档中的 创建基本方法 <?php namespace app\controllers; use yii\web\Controller; class SiteController

yii2下的hostmanager

狂风中的少年 提交于 2020-04-10 18:35:13
Vagrantfile里面如果使用了hostmanager这个插件,就必须要配置github_token,否则无法启动虚拟机。 这个插件可以让我们使用y2aa.dev这样的域名访问我们的项目,而是不使用192.168.xx.xx之类的ip。 vagrant-local.yml配置,填上你的github token,并把时区改为Asia/Shanghai:,如下: # Your personal GitHub token github_token: 'xxxxxxxxxxx' # Read more: https://github.com/blog/1509-personal-api-tokens # You can generate it here: https://github.com/settings/tokens # Guest OS timezone timezone: Asia/Shanghai # Are we need check box updates for every 'vagrant up'? box_check_update: false # Virtual machine name machine_name: y2aa # Virtual machine IP ip: 192.168.100.200 # Virtual machine CPU cores