我正在分析我的
PHP网站的性能,并惊讶地发现瓶颈是
header功能.
我正在运行PHP 5.3和Apache 2.4.
我用ab对两个简单文件进行了基准测试,发现第一个执行的phpinfo() – 比第二个调用头快得多.
第一个文件(能够以每秒1000多个请求运行):
第二个文件(每秒只能满足12个请求!):
完成第一次测试的ab输出:
C:\work\apache24\bin>ab -n 1000 -c 200 http://q.localhost/test.php
This is ApacheBench, Version 2.3
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking q.localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software: Apache/2.4.16
Server Hostname: q.localhost
Server Port: 80
Document Path: /test.php
Document Length: 69600 bytes
Server Software: Apache/2.4.16
Server Hostname: q.localhost
Server Port: 80
Document Path: /test.php
Document Length: 69600 bytes
Concurrency Level: 200
Time taken for tests: 0.984 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 69768000 bytes
HTML transferred: 69600000 bytes
Requests per second: 1015.82 [#/sec] (mean)
Time per request: 196.885 [ms] (mean)
Time per request: 0.984 [ms] (mean, across all concurrent requests)
Transfer rate: 69210.84 [Kbytes/sec] received
完成第二次测试的ab输出:
C:\work\apache24\bin>ab -n 1000 -c 200 http://q.localhost/test.php
This is ApacheBench, Version 2.3
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking q.localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software: Apache/2.4.16
Server Hostname: q.localhost
Server Port: 80
Document Path: /test.php
Document Length: 0 bytes
Concurrency Level: 200
Time taken for tests: 80.099 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 168000 bytes
HTML transferred: 0 bytes
Requests per second: 12.48 [#/sec] (mean)
Time per request: 16019.840 [ms] (mean)
Time per request: 80.099 [ms] (mean, across all concurrent requests)
Transfer rate: 2.05 [Kbytes/sec] received
对标头功能的简单调用可将性能降至每秒12个请求.这震惊了我.
为什么header()函数这么慢,有什么我可以在配置中修改它来修复它?