kn007的个人博客
♥ You are here: Home > 软件与网络 > php > 说说博客架构与缓存流程,另期待PHP 7

说说博客架构与缓存流程,另期待PHP 7

by | 26 Comments

提醒:本文最后更新于 2858 天前,文中所描述的信息可能已发生改变,请仔细核实。

CAevMRXUkAAbdaU
各位看官,请喝茶。时间过得真快,已是月底。遂水文一篇。

目前博客主要采用了Varnish+Nginx+PHP+MySQL+Memcache+Redis。

使用这个构架,最主要考虑的是Cache缓存问题,没办法,自从上了Wordpress这条船和走了PHP这条不归路,缓存变得极为重要。

不管怎说,缓存任何时候都很重要啦。特别是对于Wordpress,不缓存,这日子就没法过了。

Nginx的Fastcgi Cache暂时还没好好用到,因为使用了Varnish,就不用多此一举了,不过Fastcgi Cache还是挺好的,不过我用的少,规则写起来没Varnish顺手。

之所以Nginx,不是Apache,也不是A+N,最主要还是Nginx认到底。

Apache作为曾经的最爱,如今已形同陌路,完全不认识了。

Nginx还有个好处就是反代很方便,博客目前反代了Gravatar、Google Favicon。

博客缓存流程是:
用户请求
=>Varnish
=>判断器:
===>1.持久化静态缓存(基本上是很少改动的数据)or >1M的数据长度 => Redis
===>2.伪持久化缓存(请求一次数据库基本不变的数据)or 带缓存时间的缓存(变动少或有变动数据) or <1M的数据长度 => Memcache
=>MySQL Database

任何数据变更都会更新Cache。一般Cache优先选择存储于Memcache,因为php下,还是mc快。

php memcache module我推荐memcached,使用socket模式更佳。

特别是memcached和redis,与igbinary相结合一起,感觉真好。

缓存流程就简单说到这。简单的画个图,有点丑:
网页请求判断及缓存

对了,我更新了IP地址查询的源码:https://kn007.net/ip.php,更快速便捷的查询,欢迎大家使用。缺点是IP数据库资源是2014年1月的数据。

还有个问题就是,有朋友来问,到底要不要用(require/include)_once?

除了性能和效率上,(require/include)_once不如require/include。肯定选择require/include之外。

在这里再次引用鸟哥的话:你使用(require/include)_once,只能证明,你对自己的代码没信心。

你可以参考鸟哥的文章:《再一次, 不要使用(include/require)_once

最后要说的是,根据PHP 7时间表,PHP 7将在2015年10月发布。

PHP 7基于PHP NG项目(PHP Next-Gen),自从PHP NG开源且合并为PHP 7后,性能就持续增长和改善,它通过Zend加速PHP,使得PHP 7性能有很大提升。

之前尝试过PHP NG,真的很爽!

十分期待今年10月份的正式版,这会给我现在的应用带来更大的性能提升。

更多详情,请查看:https://pages.zend.com/TY-Infographic.html

另记一个Python问题:

InsecurePlatformWarning: A true SSLContext object is not available.

出现了上述错误,只需执行:

pip install requests==2.5.3

即可,目前requests最新版本2.6.0都会这样,原因我不清楚。

最近看到chiphell的土豪们装的机机,一直流口水。。。不过只能想想就好。

转载请注明转自:kn007的个人博客的《说说博客架构与缓存流程,另期待PHP 7

donate
有所帮助?

Comments

26 Comments立即评论
  1. php7在数值运算上效率据说提升了40%。。。。chh太壕不太敢去,去了就管不住手 :shock:

    1. MOD回复

      @Xider: 看了chh,就忍不住要剁手,不然从此存款是路人

    2. MOD回复

      @Xider: 跟HHVM不分上下,跑WP可能HHVM牛一点,但php 7明显兼容性、可塑性更强!

  2. LV2回复

    Super Cache 足矣。我的博客只用了 Apache + HHVM,速度已经足够了。

    1. MOD回复

      @Sum: 不折腾是足够了。话说稀客啊

    2. MOD回复

      @Sum: 头像呢,伙计

    3. LV2回复

      @kn007: 由于 Gmail 被墙,换了另一个邮箱,用来接收通知邮件,同时头像就没有了。

    4. MOD回复

      @Sumhat: 再申请一个嘛~ :mrgreen:

  3. 你的博客友链人真多! 呵呵,最近技术类文章很少了。

    1. MOD回复

      @郑永: 额,还好。。一发技术文就会被D。。。而且最近特忙。

    2. @kn007: 恩,我几乎都特忙。

    3. MOD回复

      @郑永: 大老板肯定忙啦。
      我们这些打工仔,也就偶尔忙起来忙得无人道。 :cry: :cry: :cry:

  4. 做的太重了

    1. MOD回复

      @不给力的面条: 还好吧,主要是其他项目也用到,单纯给wordpress是有点牛刀了

  5. 沙发哗哗的就木有了

    1. MOD回复

      @World: :razz: 那是你来晚了

  6. 就一memcached就费了我老大功夫了,其他的不敢想,貌似对我博客来说也没必要 :lol:

    1. MOD回复

      @小怪物: 哈, 你也知道我是瞎折腾

    2. @kn007: 我也爱折腾,不过我比你瞎得太多了 :!:
      装那vps把我搞懒了,因为太麻烦了。。 :lol:

    3. MOD回复

      @小怪物: :o :o 你主要是不习惯

  7. IP地址查询不错呀 OAQ

    1. MOD回复

      @Meekdai: 还好~

  8. 回复

    谢谢,在你这找到修复A true SSLContext object is not available 故障的办法:pip install requests==2.5.3,成功解决。 :roll:
    flexget
    /usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:100: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.

    1. MOD回复

      @soksolon: 解决就好,周末愉快

  9. 回复

    对于我的小博客来说,数据库缓存没任何用处,查询量太小,nginx缓存才是王道。

    1. MOD回复

      @笛声: 看什么架构吧,像我现在,主要是nginx和memcache来缓存。很多东西精简了。

icon_wink.gificon_neutral.gificon_mad.gificon_twisted.gificon_smile.gificon_eek.gificon_sad.gificon_rolleyes.gificon_razz.gificon_redface.gificon_surprised.gificon_mrgreen.gificon_lol.gificon_idea.gificon_biggrin.gificon_evil.gificon_cry.gificon_cool.gificon_arrow.gificon_confused.gificon_question.gificon_exclaim.gif