浏览模式: 标准 | 列表分类:PHP Framework
Submitted by gouki on 2020, January 7, 9:31 AM
这个标题写出来其实也挺Low的,只是提醒自己一下。有时候真的会忘,之前用Yii用的太多,突然换到Laravel后,很多东西都不记得。
比如表字段比较,Yii的话可能就是table::find()->andWhere(new DbExpression('xxx > xxx'))【不记得写得对不对,不用IDE,现在的框架类都记不清了】。于是换到laravel 的时候我也理所当然的写了 Table::query()->where(DB::raw('xx > yy'));然后发现生成的SQL是 select * from table where xx > yy is null ....我晕。这个is null是什么鬼?
再后面才发现,原来还有whereRaw。。。。只要写Table::query()->whereRaw('xx > yy')。。记一下。有好多类似鬼方法,什么whereHas,whereIn。。。还是Yii方便啊。自动识别数组。。。
黑黑
PHP Framework | 评论:0
| 阅读:9325
Submitted by akuma on 2019, January 29, 10:19 AM
Yii2项目中如何移除Bower库?方法很简单,除了移除fxp插件外,就是利用composer的provide属性
» 阅读全文
Tags: yii2, composer, bower, fxp
PHP Framework | 评论:1
| 阅读:13898
Submitted by gouki on 2016, November 18, 7:26 PM
在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。你就用不着改代码了。。
Tags: yii2
PHP Framework | 评论:0
| 阅读:16222
Submitted by gouki on 2014, May 19, 11:11 PM
google的leveldb越来越被很多人接受。国内的ideawu基于leveldb还写了一个ssdb的前置扩展用来实现了很多功能,比如标准的getset和hget,hset还有zset,zget,也实现了队列。当然pub/sub就没有办法实现了。毕竟它和redis还是有点区别。
基于标准的ssdb的类,写了个小扩展,扩展了Yii的Cache类:
PHP代码
- class CSsdbCache extends CCache
- {
-
-
-
- public $hostname = '127.0.0.1';
-
-
-
- public $port = 8888;
-
-
-
- public $timeout = 2000;
- public $serializer = false;
- public $_cache;
- protected $_cachekeys = 'ssdb_cachekey';
-
- public function init() {
- parent::init();
- }
-
-
-
- public function getSsdbCache() {
- if ($this->_cache !== null)
- return $this->_cache;
- else {
- return $this->_cache = new SimpleSSDB($this->hostname, $this->port, $this->timeout);
- }
- }
- public function getkeys() {
- return $this->getSsdbCache()->hkeys($this->_cachekeys, "", "", $this->getSsdbCache()->hsize($this->_cachekeys));
- }
-
-
-
-
-
-
- protected function getValue($key) {
- return unserialize($this->getSsdbCache()->get($key));
- }
-
-
-
-
-
-
-
-
-
- protected function setValue($key, $value, $expire) {
- $this->getSsdbCache()->hset($this->_cachekeys, $key, 1);
- if ($expire > 0) {
-
- return $this->getSsdbCache()->setx($key, serialize($value), (int) $expire);
- }
- else {
- return $this->getSsdbCache()->set($key, serialize($value));
- }
- }
-
-
-
-
-
-
-
-
- protected function addValue($key, $value, $expire) {
- return $this->setValue($key, $value, $expire);
- }
-
-
-
-
-
-
- protected function deleteValue($key) {
- $this->getSsdbCache()->hdel($this->_cachekeys, $key);
- return $this->getSsdbCache()->del($key);
- }
-
-
-
- protected function flushValues() {
- $this->getSsdbCache()->multi_del($this->getkeys());
- return $this->getSsdbCache()->hclear($this->_cachekeys);
- }
- }
其实代码很简单,不过由于ssdb默认没有serialize功能,所以在存储之前,得先主动的serialize,然后get的时候unserialize。不然就没有办法存储数组了。
由于ssdb没有flush功能。所以利用hget/hset将所有的key存储下来。flush的时候把hget获取的key读出来删除。然后再清掉这个hget的key
最后还有expire。ssdb里的setx第三个参数。。。居然不是expire,而是ttl。开始的时候,一直都当成expire。结果浪费了很长时间
Tags: yii
PHP Framework | 评论:1
| 阅读:20833
Submitted by gouki on 2013, January 15, 11:54 AM
一转眼,thinkphp已经走过了7个年头,这在开源软件里也算是一个很长的年头了。
7年,结婚是7年之痒,thinkphp从最初的fcs走到现在,中间经历的坎坷自是不必说了。
创业是一件很艰辛的事情,流年坚持将公司办在上海,就是为了能够使得用户产生很大的信任感。如今,这份信任也确实得到了回报。
看看ThinkPHP七周年页面所说的:
http://www.thinkphp.cn/7year.html
- 七年来,ThinkPHP专注于WEB应用快速开发。
- 七年来,ThinkPHP超过了300W次下载。
- 七年来,ThinkPHP经历了7个里程碑版本。
- 七年来,ThinkPHP为50W个网站提供了底层框架。
先不管有没有水份,至少现在有不少公司的招聘里,已经有公司将熟悉ThinkPHP框架当成了条件之一。这也能够证明上面的内容的真实性和可靠性了。
所以我还是坚持那句话:时间能够证明一切。
Tags: thinkphp
PHP Framework | 评论:1
| 阅读:18324