PHP设置HTTP缓存头

快乐无极 , 2017/03/12 18:05 , 开发文档 » PHP , 评论(0) , 阅读(546) , Via 本站原创
对于PHP输出的内容,如果不是需要经常变动的内容(例如伪静态的一些页面,PHP输出JS或者CSS),使用PHP合理设置HTTP响应头添加缓存设置,让浏览器尽可能缓存下内容,在刷新和再次访问同样内容时,便不需要再次请求浏览器,从而能够大幅减少服务器的响应次数,同时浏览器呈现页面也会加快了,这是非常有用的一个技巧。
Tags: , ,

boblog想升PHP7.0不容易啊

快乐无极 , 2017/03/07 11:59 , 开发文档 » PHP , 评论(0) , 阅读(357) , Via 本站原创
点击在新窗口中浏览此图片
想把博客程序想改成兼容php7.0的,结果我发现错了呀!第一~mysql扩展已经被删掉了,只能用mysqli或pdo,老系统大量使用mysql_*函数。第二~大量用preg_replace的一个技巧就是后面直接加/e后面直接eval执行,显然这玩意php7官方由于安全问题已经移除,只能用preg_replace_callback,而每一处都得改写否则根本无法运行。第三~坑爹的大量使用@符号!抑制错误输出,哪里出错了都不知道 放弃了,装个5.6没那么多事sleepy
Tags: ,
PHP5.4才支持JSON_UNESCAPED_UNICODE这个参数,此参数是让中文字符在json_encode的时候不用转义,减少数据传输量。但在PHP5.3中,就得自己写个函数来实现,以下就是解决方法:

/**
* 对变量进行 JSON 编码
* @param mixed value 待编码的 value ,除了resource 类型之外,可以为任何数据类型,该函数只能接受 UTF-8 编码的数据
* @return string 返回 value 值的 JSON 形式
*/
function json_encode_ex($value)
{
    if (version_compare(PHP_VERSION,'5.4.0','<'))
    {
        $str = json_encode($value);
        $str = preg_replace_callback(
                                    "#\\\u([0-9a-f]{4})#i",
                                    function($matchs)
                                    {
                                         return iconv('UCS-2BE', 'UTF-8', pack('H4', $matchs[1]));
                                    },
                                     $str
                                    );
        return $str;
    }
    else
    {
        return json_encode($value, JSON_UNESCAPED_UNICODE);
    }
}
Tags: ,
采用默认设置 wincache.reroute_enabled 为true
wincache.reroute_enabled boolean
Enables or disables the rerouting of certain file I/O functions through the file cache.

这个配置将对PHP中的IO函数相关的文件进行路由缓存。这可能导致一些问题。比如我博客上的附件全都无法下载了,附件的图片也无法显示,查看路由,这些缓存的文件全部路由到了attachment.php。将PHP.ini中的wincache.reroute_enabled = 0 之后,便没有这个问题了。
Tags: ,
最近在部署一个phalcon开发的网站的时候发现了一个怪像,原来在本地linux下,phalcon控制器与方法不区分大小写,但是到了实际网站中却发现,却又区分大小写。比如访问 /index/test 正常,但访问 /Index/test 或者 /index/Test 均不正常,这让人困惑不已。经检查两地配置,nginx/php配置均为相同。唯一区分是本地Linux环境为Centos 32位版本,实际服务器上为64位版本,难道phalon的32位代码与64位代码有所区分?
去翻看了phalcon论坛,有的人也提出了这个问题,然后作者是给出了答案:
http://forum.phalconphp.com/discussion/1824/case-insesitive-routing-how-to-

一、解决方法一(推荐方法)
在入口的index.php最前面适当处加入:

if (isset($_GET['_url'])) {
     $_GET['_url'] = strtolower($_GET['_url']);
}


二、解决方法二 仅适用apache

httpd.conf - add RewriteMap and enable proxy.

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
...

<VirtualHost *:8188>
DocumentRoot "C:/Eclipse 4 Workspace/phalcon/html/www/"
php_admin_flag engine On
RewriteMap lowercase int:tolower
    ProxyRequests On
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /index.php?_url=/${lowercase:$1} [QSA,L,P]
</IfModule>


不管怎么说,我觉得是phalcon源码中有些许问题导致这个不一致。现在的版本是在1.3.4,随着phalcon 2.0即将发布,相信这些小毛病能够去除。

PHP及Phalcon性能上的测试

快乐无极 , 2015/02/11 16:12 , 开发文档 » PHP , 评论(5) , 阅读(18410) , Via 本站原创
  我很推崇Phalcon,之前说过软件站全部由Phalcon重写,访问起来自然几乎和静态页面相差无几。当然这仅是在未达到瓶颈的状态下,实际情况中使用PHP肯定比不过使用纯静态页面。但是你愿意一直用PHP不断的生成纯静态页面吗?现代网站都不再喜欢这一点了。这样的动态性不强。一个模板中只需改动几个字符的代码的事情,便要全部重新一遍纯静态,还不如直接用动态输出的好。
  很多时候人们对PHP和phalcon的性能问题有所疑惑,现在就一些性能测试说明一下。环境都是在虚拟中进行的,数据和真实环境不太一样,但是总体上能反映一些情况了。
分页: 1/22 第一页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]