128M内存VPS LNMP安装优化小记

重要通知:Log4D 的域名由 http://dddspace.com 迁移到 http://log4d.com 。 订阅地址现在改为 http://log4d.com/feedhttp://feeds.feedburner.com/dddspace 。(FeedBurner 的地址未发生变化)

这一次域名迁移的同时,我更换了服务器,由原先的虚拟空间迁移到独立 VPS。 现在使用的 VPS 是 PhotonVPS

月付5.95美元,使用优惠码 TENOFFPHOTONLEB 可以打7折, 换算汇率之后是26人民币每月。

这款VPS的内存只有128,我们就要精打细算考虑如何省内存。经过我几天琢磨, 我终于配置的可用率比较高,使用 siege -c 100 -t 100 时候可以保持 100% 可用率。 (其实做不到这么高的并发,大概10个并发每秒)下面就是我记录的安装配置过程。

more ...

AzaAjaxChat笔记-实现

唔,继续整理笔记,这些是在代码编写中遇到的问题和解决办法的总结,不是Turtial,问题有针对性,内容枯燥,路人可以直接忽略~

一、Comet服务器推技术

Comet推技术,一句话概括,就是形成一个不断开的连接,使得服务器能主动向客户端发送信息。这种技术在交互性强的Web产品中应用的非常多,比如GMail。Co met的实现方式有两种:基于 AJAX 的长轮询(long-polling)方式和基于 Iframe 及 htmlfile 的流(streaming)方式,具体两种实现方式可以参考Comet:基于 HTTP 长连接的“服务器推”技术

我计划把这个技术引入,成为一个亮点,第二种Comet实现方式过于复杂(GMail使用的就是这种),我就尝试第一种。我在测试环境测试了基于 AJAX 的长轮询 (long-polling)方式。这种方式说白了就是在Ajax获取返回数据时候,在状态吗为4(数据传输完成)情况随后进行下次查询。进行循环的查询 …

more ...

AzaAjaxChat笔记-框架

1个月没有动PHP了,新装的系统甚至还没有配置PHP环境,今天看到BooguNote上有一个boo是专门记录AzaAjaxChat开发时候遇到的问题和解决办 法。于是把一些东西整理记录一下。

1. 从ThinkPHP开始

最早的AzaAjaxChat是基于ThinkPHP的,我当时在OpenSouce上看到ThinkPHP的介绍,有很多优点,看的我很心动:MVC模型,Ajax 支持,详细的文档和案例,国人开发的框架。我作为一个PHP新人一下子就被他吸引住了,决定用ThinkPHP做框架。

image

随着系统开发的推进,我却感觉到一些不自在,遇到一些问题却找不好太好的解决办法。比如ThinkPHP的模块和分组两个概念,让我比较疑惑,花费了大量时间重组目录 结构,两种方法各有优劣,让我很难选择(有选择了反而难办了 ^_^)。

最让我恼火的是相对目录带来的路径混乱,在JSP开发中,静态内容习惯性放在webcontent文件夹中,而ThinkPHP的CSS、图片、JS引用让我很疑惑, 要区分App的和Model的静态文件。

在开发过程中,我也遇到过框架本身的Bug,让我对这个框架失去信心。在这里我没有贬低ThinkPHP或者ThinkPHP开发者的意思,他们的“大道至简、开发由 我”的理念很值得欣赏。只是作为初学者因为遇到的一些问题,带来了一定的开发难度,不得已放弃。

2 …

more ...

Cakephp的国际化和poEdit的使用

原文出处:在Cakephp中使用i18n本地化程序,并使用poedit编辑语言文件 | 程序如此灵动!

alswl: 官方的帮助手册都没有这篇文章来的详细,太赞了。这篇文章不仅介绍了CakePHP的使用,更多的介绍了PoEdit的使用,图文并茂,着实详细,感谢原作者苏南。

—– 以下为原文 —–

Cakephp的很强大的i18n功能就是用来实现本地化和国际化的。他通过使用语言配置文件使得程序能够很好的适应变化进行本地化。通过新建locale/chi/ LC_MESSAGES/default.po文件,并指定语言选项为“chi”实现。本文中说的就是如何实现这个本地化过程,当然本文中的poedit并不是必须的 ,但是他可以使得工作效率更高。

一、关于i18n和L10n

这2个东东其实头一次我看到的时候也是一头雾水,但是经过百度的一通搜索,得出的结论就是,不管是几个n,最终的目的就是实现程序本地化就好了,说白了,就是由很多的 语言配置文件,反正我是这么理解的。大家也可以去看看,http://baike.baidu.com/view/372835.htm 这里有很详细的说明。

二、在Cakephp里面,实现本地化的方法

目前为止 …

more ...

CakePHP的全局变量

毕业设计AzaAjaxChat 中有一个功能,记录当前在线用户,直观的看,用Application对象就可以解决。

忙了一会发现,原来PHP没有Application对象这个概念,于是我想到了全局变量,噩梦便开始了。(Application 和全局变量其实完全不是同一个概念)

我使用的框架是CakePHP,查找资料后,找到了几种CakePHP中使用全局变量的方法。

一、使用bootstrap.php文件

在app/config 下面,有一个bootstrap文件,从名字就可以看出,这个是在控制器之前加载的文件,根据官方的描述,有下面几个用法。

  • 定义方便的函数
  • 注册全局常量
  • 定义新增的控制器,视图,控制器路径

通过这个文件可以实现全局变量的声明。

if (!isset ($globalAAC)) {
    global $globalAAC;
    $globalAAC = array (
        'currentMessageId' => -1,
        'onlineUsers' => array()
    );
}

在其他文件中就可以调用这个全局变量了。

二、通过Configure 类

Configure类是CakePHP用来进行配置文件的地方,通过write() 和read()方法 …

more ...

使用Firebug和FirePHP调试PHP[译文]

这是我第一篇译文,在写WordPress 主题时候偶尔看到的FirePHP插件,看都这篇文章,不知道为什么,动了翻译的念头。

原文链接:Debug PHP with Firebug and FirePHP

译言的链接:译言网 | 使用Firebug和FirePHP调试PHP

×××××以下译文××××××

image

如果你和我一样,你会在开发网页项目时候完全无法离开FireBug。这个小巧的“臭虫”是一个神奇而有用的H TML/CSS/JavaScript/Ajax调试器。但是你也许不知道这个还可以用来调试PHP,没错,它可以,感谢一款名为FirePHP的FireFox插件 。

通过一个小小的服务端库,和这款在Firebug上的插件,你的PHP脚本能够发送调试信息到浏览器,轻易的通过HTTP相应头编码。一旦你设置,你可以在Fiire bug的控制台获得PHP脚本警告和错误,就感觉像直接调试JavaScript一样

使用这个工具,首先你需要安装FirePHP插件 。这个插件需要你已经安装FireBug。装好FirePHP之后,重新打开Firebug面板时候,你会看到新加了一个蓝色的臭虫图标。点击这个图标会出现一个开启 或者关闭FirePHP的菜单。

FirePHP Menu
more ...