php-soap/cached-engine

php-soap/engine 的缓存装饰器

0.2.0 2024-06-11 10:27 UTC

This package is auto-updated.

Last update: 2024-09-11 11:03:25 UTC


README

此包包含用于 SOAP 引擎的缓存包装器。有关引擎的更多信息,请查看 php-soap/engine 包。

想要帮忙吗? 💚

想要了解更多关于此项目未来的信息?查看我们将要工作的下一个大项目的列表 next big projects

先决条件

您可以选择要使用的缓存实现。此包期望安装某些 PSR 实现

  • PSR-6: psr/cache-implementationsymfony/cachecache/*

示例

$ 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)
    )
);