2

好吧,我不知道我是否可以在这里发布类似的东西。但我很确定这一切都是我们可以讨论新想法以提高知识的正确场所。正确的?

我在想这个:当使用 PHP 作为 APACHE 模块时,对 PHP 文件的每个请求都会生成一个新进程来运行您的代码。通常我们加载多个文件(include's)并执行各种程序。所以猜猜我们在哪里运行了“index.php”,整个过程会重复几次,必要时会重复几次。

一个实际的例子:如果我们运行一个加载 10 个类的特定 index.php,PHP 将解析所有文件并在需要时执行有趣的部分。它将生成 CPU、内存和存储的 I/O 使用情况。

<?php

    require_once 'classes/File.php';
    require_once 'classes/Event.php';
    require_once 'classes/Mobile.php';
    // ...

    File::emptyDir('tmp');

?>

它将加载每个类,解析并执行它。好的。

因此,在我不需要多次执行所需文件的环境中,只需执行一次,并且只使用您的方法,如果我创建一个套接字环境以将其用于每个用户请求,是否可以通过避免冗余来超速 PHP 访问?

一个简单的用户交互示例:

  1. 用户发起请求/page?version=1.3
  2. .htaccess重定向到request.php引擎。
  3. 引擎检查是否存在空闲的预加载服务(service.php的套接字)并使用它。如果没有,请启动一个新服务(预加载您的代码)并使用它。
  4. 将用户数据(as$_SERVER$_GET)发送到服务(例如 JSON),它将变为 WORKING 状态。
  5. 服务将request.php再次返回用户数据。并将其转为 IDLE 以在下一个请求中使用。并且会在很长的空闲时间后关闭。

问题是:这种方法可以通过避免每次都解析所有代码(不包括操作码优化器)、准备类等来超速 PHP?

我想到了一些理论上的缺点/优势:

  • GOOD:可能会很快转过请求;
  • GOOD:将避免每次加载同一个文件,或者每次都创建一个新进程;
  • 好:可以控制每个线程实例和你的状态;
  • 中性:如果您更改某些文件,您需要关闭所有服务以创建一个新的更新文件。解决方案:避免这种情况,在开发环境中,每个主要请求都会启动一个新服务。
  • 坏:将使用内存更多时间,而不是在每次请求后释放;
4

0 回答 0