在yii1的时候,主从数据库的支持没有那么方便,只能写上多个DB的components,然后在AR的getDB中返回相应的db。这样也可以用来对付主从数据库
Yii2则已经解决这个问题,直接在代码中进行处理即可:
PHP代码
- 'db' =>[
- 'class' => 'yii\db\Connection',
-
-
- 'dsn' => 'dsn for master server',
- 'username' => 'master',
- 'password' => '',
- 'charset' => 'utf8',
- 'tablePrefix' => 'php_',
-
-
- 'slaveConfig' => [
- 'username' => 'slave',
- 'password' => '',
- 'charset' => 'utf8',
- 'tablePrefix' => 'php_',
- 'attributes' => [
-
- PDO::ATTR_TIMEOUT => 10,
- ],
-
- ],
- ];
是不是感觉超级方便,而不止是这样,你还可以配置从服务器组:
PHP代码
- 'db'=>[
-
- 'slaves' => [
- ['dsn' => 'dsn for slave server 1'],
- ['dsn' => 'dsn for slave server 2'],
- ['dsn' => 'dsn for slave server 3'],
- ['dsn' => 'dsn for slave server 4'],
- ],
- ]
更值得称赞的是,主服务器也是多个主服务器的配置就是下面这样,其中字符编码集,表前缀等设置参考上面的。
PHP代码
- 'db'=>[
-
- 'masterConfig' => [
- 'username' => 'master',
- 'password' => '',
- 'attributes' => [
-
- PDO::ATTR_TIMEOUT => 10,
- ],
- ],
-
-
- 'masters' => [
- ['dsn' => 'dsn for master server 1'],
- ['dsn' => 'dsn for master server 2'],
- ],
-
- ];
果然 是轻轻松松啊。
当然 如果你想更轻松的使用,这些,其实就是得用YII2的AR。你就用不着改代码了。。
在转这篇文章的时候,我觉得 很懒,所以我几乎没有排版就直接ctrl+c,ctrl+v就过来了
下面是正文,链接来源是:https://mozillazg.com/2013/12/python-fabric-gateway.html
说实话,跳板机给研发的日常工作添加了些许麻烦。 幸好 fabric 提供了穿越跳板机的功能,使跳板机不再影响我们的工作。
Python代码
- $ fab --version
- Fabric 1.8.1
- Paramiko 1.12.0
Python代码
-
- env.gateway = 'lisi@192.168.100.123'
-
-
- env.hosts = ['foo@111.111.111.111',
- 'bar@111.111.111.112',
- 'bar2@122.123.124.139',
- ]
-
- env.passwords = {
- 'lisi@192.168.100.123:22': 'pssword3',
- 'foo@111.111.111.111:22': 'pssword4',
- 'bar@111.111.111.112:22': 'pssword5',
- 'bar2@122.123.124.139:22': 'pssword6',
- }
-
- @task
- @hosts(env.hosts)
- def foobar():
- pass
穿越跳板机的原理是: SSH 隧道技术 。
到这里转载结束。
之所以转这个,就是因为有些机器实在没有公网IP。所以只能从外面的LVS机器进行跳板处理。
如果是纯手工调无非就是打开系统设置,但这样调整起来有点累。头得扭着半天,然后再慢慢对准它。
其实可以在“系统设置-显示器-排列”,可以先将外接显示器调整为主屏幕,然后回到第一个界面里,对它进行显示和方向进行调整。设置完后就OK了。
然后就方便了,只有有一个让人诟病的地方就是。。。即使竖起来了,你要是选择分屏,它还是只能左右 ,不能上下分屏!!!!
新版的macOSx中,已经没有“未知来源”这个选项了。因此如果要装一些第三方的软件,可能就直接提示你安装包坏了,请拖到垃圾筒里。
当然方便的操作方法是,在终端执行:
XML/HTML代码
- sudo spctl --master-disable
再打开系统与偏好设置,就会发现多了一个未知来源的选项。于是乎安装就能继续 了。
如果你比较小心谨慎,安装完后,可以再执行:
XML/HTML代码
- sudo spctl --master-enable
关闭它
在ActiveRecord的init中写了一个简单的事件触发:
PHP代码
- public function init(){
- $event = new XxxEvent();
- $this->on(self::EVENT_AFTER_UPDATE,[$event,'doSomeThing']);
- parent::init();
- }
就是这么简单,然后在程序中有一段触发:
PHP代码
- public static xxx(){
- self::updateAllCounters([],[]);
- }
然后发现,死活没有触发。追了一下代码发现,updateAllCounters没有从AR走,而是直接从db->createCommand()->execute走了
于是在下面加了一行:
self::trigger(self::EVENT_AFTER_UPDATE);
然而直接报错,说是trigger不支持静态调用,哦。。。trigger是非静态方法。
于是最后只能用万能的call_user_func_array的方法了:
PHP代码
- call_user_func_array([new self,'trigger'],[self::EVENT_AFTER_UPDATE]);
有点贱,但总算实现了。