php-soap / cached-engine
php-soap/engine 的缓存装饰器
0.2.0
2024-06-11 10:27 UTC
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- php-soap/engine: ^2.9.0
- psr/cache: ^3.0
- psr/cache-implementation: ^3.0
Requires (Dev)
- phpunit/phpunit: ^10.0
- symfony/cache: ^7.0 || ^6.4
- vimeo/psalm: ^5.9
README
此包包含用于 SOAP 引擎的缓存包装器。有关引擎的更多信息,请查看 php-soap/engine 包。
想要帮忙吗? 💚
想要了解更多关于此项目未来的信息?查看我们将要工作的下一个大项目的列表 next big projects。
先决条件
您可以选择要使用的缓存实现。此包期望安装某些 PSR 实现
- PSR-6:
psr/cache-implementation
如symfony/cache
或cache/*
示例
$ composer require symfony/cache
安装
composer install php-soap/cached-engine
引擎
此包提供通用方式使用的引擎
CachedEngine
您可以对整个引擎进行缓存,这样就不必在每次 HTTP 请求时重新加载 WSDL。
use PhpSoap\CachedEngine\CachedEngine; use Soap\CachedEngine\CacheConfig; use Soap\Engine\Engine; $engine = new CachedEngine( $yourPsr6CachePool, new CacheConfig( key: 'cached-engine', ttlInSeconds: 3600 ), static function (): Engine { return new YourSoapEngine(); } );
注意:由于此驱动程序中的闭包无法序列化,因此它与 LazyEngine
的工作效果不佳。由于此引擎已经是懒加载的,因此您可以将其用作直接替代品。
驱动程序
此包提供通用方式使用的驱动程序
CachedDriver
您可以对整个驱动程序进行缓存,这样就不必在每次 HTTP 请求时重新加载 WSDL。
use PhpSoap\CachedEngine\CachedDriver; use Soap\CachedEngine\CacheConfig; use Soap\Driver\Driver; $driver = new CachedDriver( $yourPsr6CachePool, new CacheConfig( key: 'cached-engine', ttlInSeconds: 3600 ), static function (): Driver { return new YourSoapDriver(); } );
具体示例
use Soap\CachedEngine\CacheConfig; use Soap\CachedEngine\CachedDriver; use Soap\Encoding\Driver; use Soap\Wsdl\Loader\StreamWrapperLoader; use Soap\WsdlReader\Wsdl1Reader; use Symfony\Component\Cache\Adapter\RedisAdapter; $driver = new CachedDriver( new RedisAdapter( RedisAdapter::createConnection('redis://localhost') ), new CacheConfig('your-soap-driver', ttlInSeconds: 3600), static fn() => Driver::createFromWsdl1( (new Wsdl1Reader( new StreamWrapperLoader() ))($wsdlLocation) ) );