部署
优化
在将你的 CodeIgniter 应用程序部署到生产环境之前,有若干事情可以做以提高应用程序的运行效率。
本节将描述 CodeIgniter 提供的优化功能。
spark optimize
在 4.5.0 版本加入.
spark optimize
命令执行以下优化操作:
启用 配置缓存
Composer 优化
移除开发包
当你部署时,不要忘记运行以下命令:
composer install --no-dev
上述命令将移除仅在开发环境中需要的 Composer 包,这些包在生产环境中并不需要。这将极大地减少 vendor 目录的大小。
指定发现的包
如果启用了 Composer 包自动发现功能,则在需要时所有的 Composer 包都会被扫描。但没有必要扫描那些不是 CodeIgniter 包的包,所以指定需要扫描的包可以防止不必要的扫描。
参见 指定 Composer 包。
配置缓存
重要
一旦被缓存,配置值在缓存被删除之前将不会被改变,即使配置文件或 .env 被修改。
缓存配置对象可以提高性能。然而,在更改配置值时必须手动删除缓存。
参见 配置缓存。
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
// ...
],
];
// ...
}
// ...