PHP web server in PHP?

2019-01-27 11:26发布

问题:

i.e to replace Apache with a PHP application that sent back html files when http requests for .php files are sent?

How practical is this?

回答1:

It's already been done but if you want to know how practical it is, then i suggest you install and test with Apache bench to see the results:

http://nanoweb.si.kz/

Edit, A benchmark from the site:

Server Software:        aEGiS_nanoweb/2.0.1-dev
Server Hostname:        si.kz
Server Port:            80

Document Path:          /six.gif
Document Length:        28352 bytes

Concurrency Level:      20
Time taken for tests:   3.123 seconds
Complete requests:      500
Failed requests:        0
Broken pipe errors:     0
Keep-Alive requests:    497
Total transferred:      14496686 bytes
HTML transferred:       14337322 bytes
Requests per second:    160.10 [#/sec] (mean)
Time per request:       124.92 [ms] (mean)
Time per request:       6.25 [ms] (mean, across all concurrent requests)
Transfer rate:          4641.91 [Kbytes/sec] received

Connnection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0     0    1.9      0    13
Processing:    18   100  276.4     40  2739
Waiting:        1    97  276.9     39  2739
Total:         18   100  277.8     40  2750

Percentage of the requests served within a certain time (ms)
  50%     40
  66%     49
  75%     59
  80%     69
  90%    146
  95%    245
  98%    449
  99%   1915
 100%   2750 (last request)


回答2:

Why reinvent the wheel? Apache or any other web server has had a lot of work put into it by a lot of skilled people to be stable and to do everything you wanted it to do.



回答3:

Apart from Nanoweb, there is also a standard PEAR component to build standalone applications with a built-in webserver:
http://pear.php.net/package/HTTP_Server

Likewise the upcoming PHP 5.4 release is likely to include an internal mini webserver which facilitates simple file serving. https://wiki.php.net/rfc/builtinwebserver

php -S localhost:8000


回答4:

Just FYI, PHP 5.4 just released with in-built webserver. Now you can run a local server with very simple commands like -

$ cd ~/public_html
$ php -S localhost:8000

And you'll see the requests and responses like this -

PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011
Listening on localhost:8000
Document root is /home/me/public_html
Press Ctrl-C to quit.
[Thu Jul 21 10:48:48 2011] ::1:39144 GET /favicon.ico - Request read
[Thu Jul 21 10:48:50 2011] ::1:39146 GET / - Request read
[Thu Jul 21 10:48:50 2011] ::1:39147 GET /favicon.ico - Request read
[Thu Jul 21 10:48:52 2011] ::1:39148 GET /myscript.html - Request read
[Thu Jul 21 10:48:52 2011] ::1:39149 GET /favicon.ico - Request read