bredmor / phreloader
PHP 7.4+ 的自动预加载器
Requires
- php: 7.4.0
This package is auto-updated.
Last update: 2024-09-07 10:34:40 UTC
README
Phreloader 是一个简单的 自动预加载器,适用于从版本 7.4 及以后的 PHP 预加载器。
此预加载器将自动预加载由您的 composer classmap 定义的每个 PHP 文件,只要它们可以在父目录中找到。
正在进行中
此软件包是一个正在进行中的大型项目。截至本文撰写之时,PHP 7.4 尚未发布,且此软件包尚未进行广泛的测试。使用风险自担
此软件包是直到 Composer 支持预加载 的临时解决方案。
计划中的功能(尚未实现)
- 支持更多的自定义供应商目录配置
- 将配置的预加载脚本发布到项目根目录
- 测试
安装
从源代码
从 GitHub 克隆存储库或将其解压缩到您的供应商目录中。Phreloader 为 PSR-4 自动加载打包。
从 Composer
composer require bredmor/phreloader
基本用法
在您的项目根目录中创建一个名为 preloader.php 的文件,并包含以下内容
require_once(__DIR__ . '/vendor/autoload.php');
use bredmor/phreloader/Preloader;
(new Preloader(__DIR__))->go(); // Where `__DIR__` refers to the root directory of your project's code.
可选 - 指定供应商目录位置
require_once(__DIR__ . '/vendor/autoload.php');
use bredmor/phreloader/Preloader;
(new Preloader(__DIR__, '/my/custom/vendor/dir'))->go();
将以下行添加到您的 php.ini 配置文件中
opcache.preload=/path/to/your/project/preload.php
就这样!下次您重启服务器时,PHP 将将您的项目文件预加载到内存中。
忽略特定文件或目录
在您的项目根目录的同一级目录中创建一个新文件 .nopreload。此文件中的每一行都应是不予预加载的文件或目录的(相对或绝对)路径。
示例
tests/
some_rarely_used_dir/
badfile.php
another/directory/file.php
注意事项
-
预加载需要更多的可用 RAM,您的项目越大,所需的 RAM 越多。对于较大的项目,特别是较小的服务器/容器,可能不希望预加载整个 classmap。强烈建议使用忽略列表来忽略不常加载的文件,或包含它们的目录。
-
由于预加载将您的文件的 opcodes 存储在内存中,因此每次您更改这些文件中的任何一个时,您必须重启您的服务器 - 除非这样做,否则新代码不会生效,您的服务器将继续使用缓存在 RAM 中的版本。
需求
Phreloader 是为 PHP 7.4 及以后的版本构建的。
作者
贡献
欢迎拉取请求、错误报告和功能请求。
许可证
Phreloader 在 MIT 许可证下授权 - 有关详细信息,请参阅 LICENSE 文件。