Submitted by gouki on 2012, May 8, 9:19 AM
开发中遇到一些问题,值得记住,所以我记录了一下
1、在项目中为了取得泛域名的前缀网址,这个前缀是指定的a,b,c三种,如果前缀不在这三种之内,默认为a,在apache下面的时候,建了一个*.test.neatstudio.com的泛域名指到vhost中。然后用偷懒的方法list(explode(".",$_SERVER['SERVER_NAME']))就取到了a,b,c,因为在apapche中,$_SERVER['SERVER_NAME']就是实际的a.test.neatstudio.com。然而到了nginx下行不通了。在nginx下,$_SERVER['SERVER_NAME']居然还是test.neatstudio.com,最后打印$_SERVER变量,发现$_SERVER['SERVER_HOST']才是泛域名的a.test.neatstudio.com。在此做一个记录
2、chown处理大量小文件时,你就等着CPU标高100%吧。这个问题很痛苦,但没办法
3、我晶。我记得要写一个很重要的笔记 的。我TMD又忘了。被第一个问题打断了。我晶啊,算了。等想起来再说吧
Tags: nginx, apache
PHP | 评论:0
| 阅读:16952
Submitted by gouki on 2012, May 7, 10:01 AM
时区这东西,在开发的时候,你说重要吧,也还好,毕竟没它也能正常运行,你说不重要吧,那就纠结了。特别是linux系统,都TMD差上几小时,你能不痛苦吗?win还好一点。
有一些常规方法,是大家目前都在采用的
1、php.ini中的设置,这个就不谈了,
2、程序中公用文件里设置,date_default_timezone_set一下时区
3、或者。。。自己写时间处理函数,在遇到时间的时候,用这个函数处理(比较偏向于使用这种方式,如果你的用户来自于五湖四海,或许就有用了)
4、yii框架中,可以直接在/protected/config/main.php中加入timeZone,即可(补充:Yii2方法也是一样,只是config文件的位置不太一样罢了)
Tags: yii, 时区
PHP | 评论:0
| 阅读:19740
Submitted by gouki on 2012, May 3, 8:58 AM
折腾完后yiiforsae后又开始折腾yiiforACE了,只是ACE相对还是比较痛苦的。毕竟ACE的出错直接就提示一句:
XML/HTML代码
- The page you are looking for is temporarily unavailable.
- Please try again later.
然后什么信息都没有了,根本 没有办法定位程序错在哪里。这让我很是纠结,但没有办法,一点点的来吧,感觉ACE的速度挺快。而且有1G的数据库。256M的memcache。只是rewrite怎么办呢?
苦
Tags: sae, ace
PHP | 评论:0
| 阅读:14492
Submitted by gouki on 2012, April 24, 9:40 PM
关于yii的AR效率,其实一直以来都有很多的想法,试想,如果不做metadata的缓存,每次查询前,都必须先做一下metadata的查询,效率也不会太高到哪里吧?
所以,看到官方有人在问就关注了一下:http://www.yiiframework.com/forum/index.php/topic/16597-yii%E7%9A%84ar%E7%9C%9F%E7%9A%84%E8%83%BD%E7%94%A8%E4%B9%88%EF%BC%9F/
有人提问:
XML/HTML代码
- 我在首页会很多个ar的请求。热门文章、最新文章、编辑推荐、最新评论的文章。。。。
-
- 我把这些通过 model()->findAll()的结果放在一个数组里。
-
- 然后把这个数组var_dump了一下,这些数据高达1.06M。这是不是太耗内存了?
-
- 页面上全是密密麻麻的数据表结构,如果关联关系复杂点的,会更多。
-
- 我光var_dump(yii::app()->db) 就有5000多行的数据。
-
-
- 这样的db操作这么耗内存,敢用么?谁能消除我这个担心?多谢
-
- AcitveRecord ,只能玩一玩开拓眼界. 真要生产环境用, 就不行!
然后,Qiang就回复了:
XML/HTML代码
- 你的结论有点想当然了。建议你仔细做profiling来验证。事实上,AR已经被成功应用在若干大流量的网站上了。
-
- 你不能用var_dump()来估计AR的内存开销。var_dump会把所有被reference到的对象都dump出来,包括application,以及所有的application component,因为它们都被AR间接reference到了。
-
- AR额外的内存开销是存储10个左右变量的开销。如果按20字节来估算,额外的开销是200字节,这样在1000个AR对象情况下,额外的内存开销为200KB。这个对几乎所有的web应用而言应该不是问题。
-
- 如果你需要装载更多的数据,建议你使用DAO。
-
- 另外,对于任何大流量的web应用而言,cache都是必须的。cache可以帮助解决绝大多数的性能瓶颈。
cache在DB中有一些处理的,比如那个duration,在db中查询就可以做一下缓存了。然后metadata再做一下缓存,不也挺好?
Tags: yii
PHP | 评论:1
| 阅读:19103
Submitted by gouki on 2012, April 18, 5:08 PM
Yii的behavior用起来是十分方便的,官方的文档也很多,我不多嘴一一解释,我只说一些简单的用法
如果你看过PHP5.4,你应该知道5.4多了个新功能traits。
那你可以对着手册看了,你就当yii的behavior就是5.4的traits。
在任何基于CComponents类扩展的类里,都可以用attachBehavior来附加一个行为,这就象5.4的在类里面 use traits类一样
附加行为后,直接可以$this->行为中的方法,嗯,这个与traits也一样。
好吧,来个简单的例子:
PHP traits
- <?php
- class Base {
- public function sayHello() {
- echo 'Hello ';
- }
- }
-
- trait SayWorld {
- public function sayHello() {
- parent::sayHello();
- echo 'World!';
- }
- }
-
- class MyHelloWorld extends Base {
- use SayWorld;
- }
-
- $o = new MyHelloWorld();
- $o->sayHello();
- ?>
Yii的用法:
PHP代码
- <?php
- class xxx extends CBehavior
- {
- public function show(){
- echo "show";
- }
- }
-
- class test extends CComponents
- {
- public function hello(){
- $this->attachBehavior('唯一标记符',"xxx");
- $this->show();
- }
- }
看看,是不是用法一样?不过这样也带来一个问题。。。TMD,没法在IDE里面自动识别了。
好吧,只能这样折腾自己了。。忍忍。
Tags: yii, behavior
PHP | 评论:1
| 阅读:20793