部署
优化
在将你的 CodeIgniter 应用程序部署到生产环境之前,有若干事情可以做以提高应用程序的运行效率。
本节将描述 CodeIgniter 提供的优化功能。
spark optimize
在 4.5.0 版本加入.
spark optimize
命令执行以下优化操作:
启用 配置缓存
Composer 优化
移除开发包
当你部署时,不要忘记运行以下命令:
composer install --no-dev
上述命令将移除仅在开发环境中需要的 Composer 包,这些包在生产环境中并不需要。这将极大地减少 vendor 目录的大小。
指定发现的包
如果启用了 Composer 包自动发现功能,则在需要时所有的 Composer 包都会被扫描。但没有必要扫描那些不是 CodeIgniter 包的包,所以指定需要扫描的包可以防止不必要的扫描。
参见 指定 Composer 包。
配置缓存
缓存配置对象可以提高性能。然而,在更改配置值时必须手动删除缓存。
参见 配置缓存。
FileLocator 缓存
缓存 FileLocator 找到的文件路径可以提高性能。然而,在添加/删除/更改文件路径时必须手动删除缓存。
参见 FileLocator 缓存。
PHP 预加载
使用 PHP 预加载,你可以指示服务器在启动时将核心文件如函数和类加载到内存中。这意味着这些元素在所有请求中都可立即使用,跳过了通常的加载过程,从而提升了应用程序的性能。然而,这会带来增加内存使用的代价,并且需要重启 PHP 引擎才能生效。
需求
使用预加载需要一个专门的 PHP 处理器。通常情况下,Web 服务器配置为使用一个 PHP 处理器,所以一个应用程序需要一个专用的 Web 服务器。如果你想在一个 Web 服务器上为多个应用使用预加载,请配置你的服务器以使用带有多个 PHP 处理器的虚拟主机,例如多个 PHP-FPM,每个虚拟主机使用一个 PHP 处理器。预加载通过读取在 opcache.preload
中指定的文件将相关定义保留在内存中。
备注
参见 使用一个 CodeIgniter 安装运行多个应用程序 以使用一个核心的 CodeIgniter4 处理多个应用。
配置
打开 php.ini
或 xx-opcache.ini``(如果你将 INI 配置分离开来),建议设置 ``opcache.preload=/path/to/preload.php
和 opcache.preload_user=myuser
。
备注
myuser
是在你的 Web 服务器中运行的用户。如果你想找到分离的 INI 配置的位置,只需运行 php --ini
或打开 phpinfo()
文件并搜索 Additional .ini files parsed。
确保你使用的是 appstarter 安装。如果使用手动安装,你必须更改 include
路径中的目录。
<?php
// ...
class preload
{
/**
* @var array Paths to preload.
*/
private array $paths = [
[
'include' => __DIR__ . '/system', // <== change this line to where CI is installed
// ...
],
];
// ...
}
// ...