我在某处读到 php 每次执行时都会解析整个 .php 文件。那里提出了一些解决方案(那不是 opcache),但是我丢失了网站并且找不到它。
现在我有一个巨大的php网站,里面有很多很长的函数,经常单独使用,并且要求执行速度快。
为了避免让 php 解析所有其他不会使用的函数,我正在考虑进行模块化设计,其中存储在独立 php 文件中的函数只有在实际使用时才会包含在内。但是我无法确认除非需要,否则 php 不会解析函数内部或条件语句内部的包含。php 会解析这些包含吗?
例子:
<?php
$func_to_execute = $_GET['func'];
$parameter = $_GET['parameter'];
switch($func_to_execute)
{
case 'a':
include 'func_a.php';
$output = func_a($parameter);
break;
case 'b':
include 'func_b.php';
$output = func_b($parameter);
break;
case 'c':
include 'func_c.php';
$output = func_c($parameter);
break;
};
echo $output;
?>
在此示例中,如果我请求 a,我希望 php 仅解析 func_a,如果我请求 b,则仅解析 func_b,等等。实际上有不止 3 个函数,每个函数都是一个很长的算法,还有很长的字符串和数组。
作为包含的替代方案,我正在考虑制作独立的 php 文件并执行它们并仅在需要时使用 shell_exec 检索它们的输出。但这会带来其他复杂性,例如格式化参数(我不知道如何将带有特殊字符或 JSON 的非常长的字符串作为 shell 中的参数传递)并调用函数以在壳。这些复杂性会让它比让 php 解析整个文件更慢吗?
我知道 opcache 功能。即使每次都测试所有功能的所有操作是否足够?
是否有其他方法可以使 PHP 网站模块化,而不是每次都让 php 解析整个 php 文件?
谢谢你。