静态化网页使用php为扩展名是否会影响效率

| | Comments (0) | TrackBacks (0)
最近遇到一个棘手的问题:静态化网页使用php为扩展名是否会影响效率?也就是说,如果一个PHP文件中并不包含任何php语句,是否在系统资源占用和执行效率上与html文件相同呢?

问题是这样产生的:

在建站初期,我不知道是出于什么原因考虑,决定将所有的内容页都使用PHP扩展名,当时也许是考虑到今后增加session、或内嵌广告可统一管理,不需要重新进行全站building吧,总之就遗留下这一历史问题。

然而随着网站的不断更新,我发觉使用php没有太大的必要,即便全站使用html也足够我的需求。而此时我月来月关心起CPU以及内存资源的占用了,因为我的虚拟主机提供商有CPU资源限制、而我自己的服务器又没有足够的内存,这时候带宽并不是瓶颈,瓶颈来自于硬件。

考虑创建出来的所有PHP都是纯静态的,里面不包含任何PHP语句,我猜测是不是不会调用PHP解释器?或者即便调用了、对系统的资源占用也没有太大的影响?

测试数据:

在本地架设了一个干净的系统,安装上Apache、PHP、并创建了两个文件,内容一样,分别为test.html和test.php;此时用AB压测得到一下数据:

一、TEST.HTML
Concurrency Level:      300
Time taken for tests:   62.171875 seconds
Complete requests:      30000
Failed requests:        0
Write errors:           0
Total transferred:      10590000 bytes
HTML transferred:       2970000 bytes
Requests per second:    482.53 [#/sec] (mean)
Time per request:       621.719 [ms] (mean)
Time per request:       2.072 [ms] (mean, across all concurrent requests)
Transfer rate:          166.33 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1  28.6      0     656
Processing:    78  615 238.9    640    1625
Waiting:       15  508 255.7    546    1328
Total:         78  617 239.2    640    1625

二、TEST.PHP
Concurrency Level:      300
Time taken for tests:   82.937500 seconds
Complete requests:      30000
Failed requests:        0
Write errors:           0
Total transferred:      8520000 bytes
HTML transferred:       2970000 bytes
Requests per second:    361.72 [#/sec] (mean)
Time per request:       829.375 [ms] (mean)
Time per request:       2.765 [ms] (mean, across all concurrent requests)
Transfer rate:          100.32 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2  33.1      0     656
Processing:   109  824 297.5    703    3078
Waiting:       15  662 278.3    562    3046
Total:        109  827 297.8    703    3078

而观察到的CPU情况也不太乐观(附图如下);而apache的线程池在短时间内不会释放,因而内存影响不明显。

html vs php.jpg

结论:

我挺郁闷的,真不知道当初搭建网站的时候是怎么想的。虽然说上述区别并不影响真正的应用,毕竟在真正的网络部署中,前端还会部署一台缓冲服务器,然而对于我现在的服务器部署结构和硬件资源而言,似乎还是受到了一定程度的影响。

经过权衡,我决定继续使用php为程序扩展名,等以后有机会,放个squid在前面吧,希望在那之前,不会遇到瓶颈。

UPDATE:

烦躁的事情不是产生于我自身,而是虚拟主机提供商的服务器在压力较大时、会经常出现500错误,也就是说我个人的程序再优化也于事无补、只要使用PHP程序,就会受到邻居们的影响,尽快将全站转移回自己的服务器才是稳妥之策。

0 TrackBacks

Listed below are links to blogs that reference this entry: 静态化网页使用php为扩展名是否会影响效率.

TrackBack URL for this entry: http://shangning.net/chinese/mt-tb.cgi/5

Leave a comment

友情链接

Google