bredmor/phreloader

PHP 7.4+ 的自动预加载器

0.0.6 2019-11-27 00:09 UTC

This package is auto-updated.

Last update: 2024-09-07 10:34:40 UTC


README

Packagist Version PHP from Packagist License from GitHub

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 文件。