onstuimig / cachetool-library
管理您的OPcache & APCu缓存
Requires
- php: >=8.1.0
- hollodotme/fast-cgi-client: ^3.0
- psr/log: ^2.0 || ^3.0
- symfony/http-client: ^6.0
- symfony/http-foundation: ^6.0
- symfony/process: ^6.0
Requires (Dev)
- phpunit/phpunit: ^9.0
README
CacheTool Library 允许您操作 APCu、OPcache 和文件状态缓存。它将连接到 FastCGI 服务器(如 PHP-FPM)并对其缓存进行操作。
这是对 gordalina/cachetool 的仅库分支。
这有什么用?
- 也许您想清除字节码缓存,而不重新加载 php-fpm 或使用 Web 端点。
- 也许您想有一个处理缓存失效的 cron。
- 也许您想从 PHP 中直接查看一些统计信息。
- 还有更多...
注意,与 APCu 和 Opcache 不同,文件状态缓存是按进程而不是存储在共享内存中。这意味着运行 stat:clear
对 PHP-FPM 将仅影响响应请求的 FPM 工作进程,而不是整个池。有关文件状态缓存如何操作的更多信息,请参阅 Julien Pauli 的文章。
## Usage
Add it as a dependency
```sh
composer require onstuimig/cachetool-library
创建实例
use CacheTool\Adapter\FastCGI; use CacheTool\CacheTool; $adapter = new FastCGI('127.0.0.1:9000'); $cache = CacheTool::factory($adapter, '/tmp');
您可以使用 apcu
和 opcache
函数。
$cache->apcu_clear_cache(); $cache->opcache_reset();
代理
CacheTool 依赖于 Proxies
来提供功能。默认情况下,从工厂创建 CacheTool 实例时,所有代理都启用,包括 ApcuProxy
、OpcacheProxy
和 PhpProxy
。您可以像以下示例一样自定义或扩展它。
use CacheTool\Adapter\FastCGI; use CacheTool\CacheTool; use CacheTool\Proxy; $adapter = new FastCGI('/var/run/php-fpm.sock'); $cache = new CacheTool(); $cache->setAdapter($adapter); $cache->addProxy(new Proxy\ApcuProxy()); $cache->addProxy(new Proxy\PhpProxy());
测试
运行 composer install
后,运行 ./vendor/bin/phpunit
解决测试失败的问题
sslip.io
tests/Adapter/Http/FileGetContentsTest
和 tests/Adapter/Http/SymfonyHttpClientTest
中的测试依赖于 sslip.io 来解析包含 IP 的主机名。为此,sslip.io 的域名服务器需要位于运行这些测试的主机配置的 DNS 服务器中,否则用于测试的类似 _.127.0.0.1.sslip.io
的主机名将无法解析。DNS 服务器的 IP 地址可以在 sslip.io 上找到,如何配置它们取决于用于运行测试的系统。
版本兼容性
许可证
CacheTool 采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE