手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:thinkphp

ThinkPHP的主从数据库配置

最近涉及到的项目中用到了thinkphp,我都N年没有碰过这玩意了。但现在还是需要用一用。正好那些能够下载得到的wxcms也可以用这个来优化一下性能。。其实我就一台服务器。装逼而已

 

于是转一下别人的文章,因为他其中特别写了一句:只要是exec就一定从主库走,query一定从从库走。所以建议query中不要有实际的更新和插入操作。以防万一
原文地址:http://www.verydemo.com/demo_c327_i782.html
 
前言:
Thinkphp 框架本身是支持读写分离的,如何做呢?
 
最简单的做法是在配置文件中修改:
 
PHP代码
  1. 'DB_TYPE'=> 'mysql',     
  2. 'DB_DEPLOY_TYPE' => 1,  //开打支持多服务器                  
  3. 'DB_RW_SEPARATE'=>true, //读写<strong>分离</strong>分开    
  4. 'DB_HOST'=> '192.168.100.78,192.168.100.60'// 数据库服务器地址 master(写)/slave(读)    
  5. 'DB_NAME'=>'test',                   
  6. 'DB_USER'=>'root',                 
  7. 'DB_PWD'=>'root',           
  8. 'DB_PREFIX' => 'fav_',     
默认第一台数据库78是主数据库,负责写入操作,第二台60负责读操作,Thinkphp 会自动识别读和写,然后分配链接对应的数据库,来达到读写分离的效果。
 
注意事项:
 
1. 如果要设置分布式数据库,暂时不支持DB_DSN方式配置。
2.如果你当前采用了分布式数据库,并且设置了读写分离的话,query方法始终是在读服务器执行,因此query方法对应的都是读操作,而不管你的SQL语句是什么。
3.如果你当前采用了分布式数据库,并且设置了读写分离的话,execute方法始终是在写服务器执行,因此execute方法对应的都是写操作,而不管你的SQL语句是什么。
 
因此,'DB_DSN'=> 'mysql:host=192.168.100.60;dbname=51fanli_cang', 这种方式不支持主从分离,需要改。
 
当采用原生态的sql语句进行写入操作的时候,要用execute,读操作要用query,切记,否则乱掉了。
 
搞定!
---EOF---

Tags: thinkphp

ThinkPHP 7周年了


一转眼,thinkphp已经走过了7个年头,这在开源软件里也算是一个很长的年头了。
7年,结婚是7年之痒,thinkphp从最初的fcs走到现在,中间经历的坎坷自是不必说了。
创业是一件很艰辛的事情,流年坚持将公司办在上海,就是为了能够使得用户产生很大的信任感。如今,这份信任也确实得到了回报。
看看ThinkPHP七周年页面所说的:

http://www.thinkphp.cn/7year.html
  1. 七年来,ThinkPHP专注于WEB应用快速开发。  
  2. 七年来,ThinkPHP超过了300W次下载。  
  3. 七年来,ThinkPHP经历了7个里程碑版本。  
  4. 七年来,ThinkPHP为50W个网站提供了底层框架。 

先不管有没有水份,至少现在有不少公司的招聘里,已经有公司将熟悉ThinkPHP框架当成了条件之一。这也能够证明上面的内容的真实性和可靠性了。

所以我还是坚持那句话:时间能够证明一切。

Tags: thinkphp

scope

 scope这个单词给人的遐想实在太多了。第一次熟悉它的时候是因为他在yii的AR中有个小小的位置,比如 默认的查询值 ,默认的更新值 等等,方便自己写代码,方便给其他人一些默认属性的设定。

前两天在和流年聊天时,他说,你应该是好久没有看过thinkphp了,thinkphp中也有类似功能了。然后给我一个网址:http://www.thinkphp.cn/info/176.html,这种命名范围是新加入的功能。看了一下,果然功能很类似,也挺不错。

都是实现了差不多类似的功能。其实在很久以前,我记得thinkphp就有default_update字段和default_insert字段的。还可以设默认值。现在查询也可以了。

thinkphp也算是天天在进度,用它写程序的人也越来越多了,最近相对较火的瀑布流程序:pinphp,就是基于thinkphp进行开发的,开发速度快,在国内拥有N多用户,但索取的人多,贡献的人少,这恐怕也是TP最近的现状了。

支持一下国内的框架。顺便,QuickPHP这个框架大家也可以先记一下。(http://quickphp.net/),是一哥们写的。断断续续写了N多年了。基本成型。

国内现在框架有N多了,好象是个写PHP的都有想框架的冲动,我老了,蛋定了,不写了。。。。

Tags: yii, thinkphp

收到phpstorm序列号

在下载phpstorm的时候,向phpstorm申请了开源序列号,在经历了14天之后,终于收到了一封来自phpstorm的邮件,里面给了我一个序列号,可以使用一年。
非常开心,HOHO。
当然,在高兴之余也得谢谢thinkphp,因为我在申请的时候,是用的thinkphp的commiter的身份。幸好流年没有从google code的项目中将我删除。灰常感谢。。

phpstorm在一段时间的使用过程中感觉还是比较爽的,我对它进行了一些简单的配置
1、把字体換成我习惯的字体(参考dualface的更换netbeans字体)
2、将快捷键換成了netbeans的用法
3、将代码的配色基本換成了与netbeans一致的。。方便我更換IDE
4、配置了一些代码的美化功能等。

上图,由于我不知道那个号码是否有用,所以我屏蔽了。。。
大小: 61.71 K
尺寸: 500 x 262
浏览: 2062 次
点击打开新窗口浏览全图

Tags: phpstorm, 序列号, thinkphp

Drupal 的钩子(Hooks)

hooks这玩意,一向是被认为是可扩展的代名词,当一个系统启动了hooks后,他就变得可扩展了,同样,他的性能也就需要被众人拿出来做比较了。
目前被很多人拿来做比较的是两款程序:drupal和wordpress,是使用量最大的博客程序之一,在很多人眼里,这两个程序已经脱离了博客,而是CMS了。drupal前后台不分是我最不舒服的地方,所以wordpress才是我的首选。或许大家看到我的TAG里面还有ThinkPHP和QeePHP,那是因为这两个框架都在考虑有行为加入,行为嘛,相对于框架,就当于一个hooks,所以我也加上了这两个框架
thinkphp的Add_filter,add_action和wordpress有点相像 ,而qee因为没有仔细看过,所以不太清楚(flea的时候好象没这个功能)

跑题半天了。上文了

      Drupal怎么就知道什么时候调用一个模块来处理特定的请求?

      这个是通过Drupal的hook机制完成的,下面解释一下hook的工作机制。

      当Drupal处理来自用户的一个请求,它通过一系列步骤进行。比如:Drupal核心首先引导这个应用,确定关键变量和经常使用的功能。接下来,它加载 关键库、主题和模块。接下来,它继续处理请求,将请求的URI映射到正确的处理代码,等等。然后它为数据应用一个主题,为输出来格式化信息。最后它返回输 出结果到用户的浏览器。

      在循序渐进的预定义时刻,Drupal进行勾取。这意味着什么呢?简短的说,它意味着Drupal测试部分或全部当前启用的模块,寻找遵循特定的预定义模 块的函数。一些已经连接这个进程到“回调”的模式经常被用在事件处理模块中。Drupal和这个是类似的,但是更加充满活力。

      比如说,当它正在创建一个页面浏览内容时,Drupal可能再模块中寻找叫做<modulename>_block() 和<modulename>_view()的函数(在这里<modulename>被每个Drupal检测的模块的名称代替)。 寻找模块包含的这些函数被叫做实施hook_block()和hook_view()勾取。

      当Drupal找到这些函数,它执行它们,并且利用这些函数返回的数据创建一个响应来发送给用户。然后Drupal继续循序渐进的处理请求,或许在它进行 过程中执行许多其它的钩子。

      当所有的步骤完成并且一个响应发送给用户,Drupal自动清除并且推出。

      模块可以定义自己的钩子,这些钩子又可以被其他模块使用。这样一来,hook机制可以扩展到提供复杂的定制行为。

      当一个模块提供匹配一个钩子的签名的功能,我们就说那个模块执行那个钩子。比如,假设Drupal有一个叫做hook_example()的钩子。如果我 们定义一个叫做 mymodule 并且包含一个叫做 mymodule_example() 函数的模块,我们就会用到 hook_example().

      Hook对于面向对象程序员的启示:

      那些对面向对象编程熟悉的程序员可能发现在面向对象语言中考虑将钩子作为一个类似于接口方法或者抽象方法的机制是很有用的。钩子是Drupal将寻找的函 数并在某些情况下需要出现在你的模块中。就像接口方式,一个钩子的函数签名必须匹配Drupal的预期签名。而和接口不同的是,模块开发者可以选择(在一 定程度上)哪个钩子去实现、哪个钩子去忽视。Drupal不要求每个定义的钩子都实现。

参考:《Learning Drupal 6 Module Development》

原文来自:http://www.cnblogs.com/stylesheet/archive/2010/04/16/1713512.html,上次我也写过wordpress的hooks,其实原理都差不多。

Tags: drupal, hooks, wordpress, thinkphp, qeephp

Records:2112345