根据服务器配置,答案是高度可变的。
我们先回答问题1:
服务器是否同时运行 100 个单独的 php.exe 进程?
这取决于 PHP 的安装方式。如果 PHP 是通过 CGI 运行的,那么答案是“是的,每个请求都调用一个单独的 PHP 实例”。如果它是通过 Apache 模块运行的,那么答案是“不,每个请求都会在 Apache 可执行文件中启动一个新的 PHP 线程”。
其他 Web 服务器也将存在类似的变化。请注意,对于基于 Unix/Linux 的操作系统,为每个请求运行单独的可执行文件副本不一定对性能不利;操作系统的核心是这样设计的,在许多情况下,任务最好由多个单独的可执行文件完成,而不是一个单一的可执行文件。
但是,无论您如何处理,同时处理大量请求都会耗尽您的服务器资源并导致用户超时和错误。这就是为什么让您的 PHP 程序尽快完成运行很重要的原因。不要编写运行缓慢的用于 Web 消费的 PHP 程序;如果您可能有很多流量,您需要像测试功能一样测试性能。让您的程序快速退出将大大降低同时请求大量的可能性,这显然会对您网站的性能产生重大影响。
现在你的第二个问题:
它会重新解释 page.php 100 次吗?
对于标准的 PHP 安装,这里的答案是“是的,它确实会影响性能”。
但是,PHP 提供了几种专门用于缓解这种情况的缓存解决方案。主要选项是 APC 和 Zend Cache,它们都可以作为标准模块安装。使用这些模块意味着 PHP 会缓存解释的代码,因此它可以在后续调用中运行得更快。
Zend Cache 将作为即将发布的 PHP 5.5 版本的标准 PHP 安装的一部分包含在内。