yii2入口文件:Web Applications 和 Console Applications

  yii框架中通常包含两类入口文件,一类是针对用户的web入口,一类是针对命令行的控制台入口。要注意两个入口的一致性,否则可能在命令行层面造成相关全局常量或函数的引用缺失。

入口文件

  • 通常用来定义全局常量:如debug调用,当前运行环境

    1
    2
    defined('YII_DEBUG') or define('YIII_DEBUG', true);
    defined('YII_DEV') or define('YII_DEV', 'dev');
  • 注册自动加载函数(composer autoloader)

    1
    require(__DIR__ . '/../vender/autoload.php');
  • 加载Yii类文件

    1
    require(__DIR__ . '/../vender/yiisoft/yii2/yii.php');
  • 加载应用配置

    1
    $config = require(__DIR__ . '/../config/web.php');
  • 调用yii\base\Application::run()处理请求

    1
    2
    $application = new yii\web\Application($config);
    $application->run();

小技巧-MySQL时间字段设置默认及自动更新

设置默认创建时间

`create_time` timstamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'

设置默认更新时间并在修改时自动更新

`update_time` timstamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改日期'

Redis 批量插入

有时候,一些redis用例需要在短时间内插入大量已有或由用户临时生成的数据,导致百万级的键-值对需要在尽可能短的时间内创建。

这就称作批量插入,这篇文档的目的就是探讨如何尽可能快的向redis插入数据。

使用protocol

因为某些原因,通过一个普通的redis客户端来实现数据的批量插入并不可取,比如:一个很小白的方式就是一个命令接一个命令的发送,这样会很慢,因为每个命令都会消耗一个回路时间(因为redis是一个client-server模式的应用,客户端和服务器可能隔了十万八千里)。这种情况也许可以通过使用管道方式(pipeling)来解决,但是对于大量数据的批量插入,往往需要读取返回值的同时创建新命令,还要确保尽可能快的插入。