原贴:http://www.162cm.com/archives/433.html
PHP 装上APC之后的问题:
APC由于能够缓存文件上传进度,因此算是解决了一直以来困挠PHP开发人员的一个老大难,所以我也特别喜欢他了。如果对php实现文件上传进度条有困 难,可以看这里 。
不过今天发现,APC宣称的加速功能,其实也是一种缓存,而不是对编译方式,编译过程什么的进行了优化.
原因是,我把两个程序目录名称对调,结果发现,程序报错了.但是让人郁闷的是,错误提示是在一个已经不存在的文件的109行。后来不管怎么刷新,都是这个结果.后来只好重启web服务器了事.
看来,APC是把编译好的php文件存放在共享内存中,以后是每过一段特定时间才重新编译一次.对于已经运行的应用,这个将大大节省你的CPU占用(虽然 PHP的编译已经非常非常地快了,开启APC缓存后,仍能大副度地加速你的PHP,因为php源文件不需要在每次调用时都要编译了).从原理上说,PHP 已经被改造成了Jsp式的静态脚本.只是PHP+APC的组合比Jsp的还要快,因为JSP在运行时会不断检测JSP源文件是否已经被更新,不断检测 XML配置文件是否被更新.
但是,调试期间可能需要重启Apache.
目前没有在Lighttpd下检测以FastCGI方式运行时加入APC对PHP性能的影响。
当前日志信息
- 2009年02月27日
我装了apc,可是修改文件,文件却即时生效了,apc.ttl设置的是0,apc_cache_info查看缓存内容,也能看到那个文件,为什么呢?
- 2009年02月27日
又试了eaccelerator,这两个原理应该是一样的,修改php文件居然也即时生效了,不理解ing。。。
- 2009年03月14日
1.一般配置文件来说 0表示无限制,比如在线人数设为0表示不做限制。所以apc.ttl也是这样。
2.apc正常工作时就是检测时间戳,一旦文件内容发生改变就更新缓存里的预编译内容。出bug时才会有不更新的情况。那个不能即时更新缓存编译,要重启apache才生效的bug好像已经被改了。 - 2009年03月23日
哦。了解了,原来有这个机制,很合理哈,多谢~
该日志共有 4 条评论
发表评论 | RSS订阅 | 反项链接