文章标签 ‘PHP’
location ~ \.php($|/) { set $script $uri; set $path_info ""; if ($uri ~ "^(.+\.php)(/.*)") { set $script $1; set $path_info $2; } fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param PATH_INFO $path_info; fastcgi_param SCRIPT_FILENAME /var/www/example-org/wwwroot/web$script; fastcgi_param SCRIPT_NAME $script;}
由于PHP4版本已老,PHP官方已不再对其维护支持,官方站上的PHP版本目前只有5.2、5.3、6.0的PHP下载,而一些老项目还是使用PHP4编写的,而存在一些版本兼容问题导致还无法迁移到PHP5,这样在重新部署环境的时候就需要下载PHP4了。 由于官方不直接提供PHP4的下载,我们就需要自己找,Google之后,发现一站点:http://museum.php.net/,上面的PHP版本还挺全的,甚至连PHP1都有,是不是很雷人呢……,有需要老版本PHP的赶紧收藏下来,否则以后又找不到了。
测试方法,新建一个名为User的PHP类,循环1000000次读取相关属性测试。 第一个测试,设置$username为私有方法,在循环内部生成类对象,使用__get获得其值 <?php class User { private $username; public function __get($name) { return $this->$name; } } for ($i = 0; $i < 1000000; $i++) { $user = new User; $user->username; } ?> real 0m4.487s user 0m4.192s sys 0m0.291s 第二个测试,设置$username为公有方法,在循环内部生成类对象,直接获得其值 <?php class User { public $username; public function __get($name) { return $this->$name; } } for ($i [...]
从图中可以看出,在Zend Framework Controller分发流程中,Request Object几乎贯穿了整个框架的处理流程,假如程序的本质是I/O,Web的本质就是Request/Response。 整个处理流程中,组件只与Request Object发生耦合,Router通过读取Request Object中的值,再适当地更改其部分值,为Dispatcher指明方向,生成适当的具体控制器类,达到路由的效果。 在各个处理流程中各个组件可以被替换,藕荷度小,符合设计模式,看上去很美。
蓝色的是CakePHP、红色是symfony、橙色是Zend Framework,在关注度上基本都是齐头并进。Zend Framework毕竟是PHP官方出的框架,因此新闻引用量明显要大于其他两个。
看看下面这段示例代码,其中带各种“\”反斜杆部分的内容,就是PHP 5.3中即将出现的命名空间。各位看这段代码写的恶心不……,幸好不是我写的,这可是官方的示例代码。假如IDE不支持的话,写这段代码、维护这段代码都是个噩梦…… 在其他语言飞速进步,新型框架层出不穷之际,PHP却改的越来越没有自己的特点了,非但没有发挥自己动态的长处,却不断地向Java语法靠近,假如真的都需要Java,我们还用PHP干什么呢。 http://php.net/manual/en/language.namespaces.rationale.php
前两天发了一篇博客,说我把原来放在Feedsky上托管的Feed拿回来放在自己的空间上自己托管了:《回归吧,我的Feed!》,Johnny问我是怎么做的,在这里我介绍一下,我的博客猫言猫语的地址是:“http://www.wuwx.net”,原来使用的RSS Feed是在Feedsky托管的:“http://feed.wuwx.net/”,现在我想把RSS移回来自己托管,有什么办法呢? 第一种方法:新建虚拟主机 这个方法就是新建一个名为feed.wuwx.net的虚拟主机,然后通过访问这个虚拟主机来获得RSS的数据,获得方法可以有很多种,通过PHP远程读取,通过反向代理,通过定期生成静态RSS等。 PHP远程读取的例子: <?phpecho file_get_contents(“http://www.wuwx.net/feed/”);?> 第二种方法:使用原有主机 这个方法通过判断访问这个空间的HTTP_HOST头信息,判断是普通的WWW请求,还是RSS请求,如果是WWW请求则进入正常服务,如果是RSS请求则转发给Feed。 首先把feed.wuwx.net与www.wuwx.net绑到同一个空间,然后在wp-config.php中加上如下代码: if($_SERVER['HTTP_HOST'] == 'feed.wuwx.net') { $_SERVER['REQUEST_URI'] = '/feed/';} 如果你的WordPress没有使用自定义链接形式(Rewrite)的话,可能需要采用下面的另外一种写法: if($_SERVER['HTTP_HOST'] == 'feed.wuwx.net') { $_GET['feed'] = 'rss2';} 这样就OK了,我使用的就是第二种方法,大家有什么更好的办法么?欢迎留言反馈:)
301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:301 代表永久性转移(Permanently Moved),302 代表暂时性转移(Temporarily Moved)。 301 重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301来做转址,如果我们把一个地址采用301跳转方式跳转的话,搜索引擎会把老地址的PageRank等信息带到新地址,同时在搜索引擎索引库中彻底废弃掉原先的老地址。 在PHP中,一般实现页面跳转的语句如下: <?php header('Location: http://www.wuwx.net/');?> 当我们使用工具查看这个HTTP头,发现他返回的是一个HTTP 302临时重定向。而不是我们所期望的HTTP 301永久重定向,注意看下图中的第一行: 应该如何实现HTTP 301永久重定向呢?其实也很简单,只需增加一行代码: <?phpheader('HTTP/1.1 301 Moved Permanently');header('Location: http://www.wuwx.net/');?> 当我们再次查看这个页面的HTTP头的时候,他返回的就是我们所期望的HTTP 301永久重定向了。

