PHP内置的Web服务器运行非常缓慢。

5

我是PHP的初学者,正在制作一个网站,用于在网页上显示Linux系统的基本系统信息(CPU使用率、内存使用率等)。我使用了内置的Web服务器:

php -S 192.168.1.36:8000

前端使用Bootstrap和JS。我正在使用的php脚本使用了Server-Sent Events(从这里学到)来每2秒向前端发送CPU使用率、内存使用率和磁盘使用率(它从shell_exec()方法获取这些信息)。
问题是,网站刷新非常慢,有时第一次加载也非常慢。当我查看JS控制台时,我注意到即使我按下刷新按钮,服务器仍在向网页流数据。这可能是因为连接没有关闭吗?

1
我们无法猜测您的脚本具体功能,但有一点可以确定:内置的 PHP 服务器适用于开发和单元测试,而不是性能或生产环境。 - Julie Pelletier
安装 Lamp/Wamp 堆栈,您将获得更好的性能。 - user557846
@JuliePelletier 是的,但加载一个只有100行左右的小网页需要半分钟的时间!当你关闭页面并在新标签页中重新打开它时,它的性能会更好。 - cgifox
1
输出的长度完全不相关。编写一个脚本只需1分钟即可输出一个单词非常容易:<?php sleep(60); echo 'done'; - Julie Pelletier
2个回答

5

PHP内置的Web服务器只适用于开发使用。它是单线程的,当您使用它时,初始化传入请求需要花费数百倍的时间。而且通常不仅有一个请求,还有js、css和图像等请求。因此,加载完整页面可能需要几秒钟。它仍然没有针对性能进行优化。

对于简单的测试或短期开发周期,使用它也可以,但对于高强度的开发,我总是建议使用真正的Web服务器。


0
从PHP 7.4及更高版本开始,您可以设置PHP_CLI_SERVER_WORKERS来获取更多的工作进程(默认为1个)。这将显著提高性能。
例如,我在WordPress开发中使用以下脚本。现在不需要安装LAMP堆栈,开发服务器已经足够快,用于开发。您还可以使用自定义的php.ini文件:
#!/usr/bin/env bash
PHP_CLI_SERVER_WORKERS=10
php -S 0.0.0.0:8000 -c ./php.ini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接