elcobvg / laravel-opcache
Laravel的定制OPcache缓存驱动。比Redis或memcached更快。
Requires
- php: >=7.0.0
Requires (Dev)
- mockery/mockery: 1.0
- orchestra/testbench: 3.5
- phpunit/phpunit: 6.5
- squizlabs/php_codesniffer: 3.2
README
Laravel的定制OPcache缓存驱动。比Redis、Memcache或APC更快。
此包为您的Laravel项目添加了一个缓存驱动,该驱动使用PHP引擎的内存文件缓存(OPcache)来缓存应用数据。
由于所有这些解决方案都必须序列化和反序列化对象,因此这种方法比Redis、Memcache、APC和其他PHP缓存解决方案更快。通过在请求之间将PHP对象存储在文件缓存内存中,该驱动程序可以完全避免序列化!
安装
使用Composer要求此包。
composer require elcobvg/laravel-opcache
Laravel 5.5使用包自动发现,因此不需要手动添加ServiceProvider。
如果您不使用自动发现或Laravel版本为5.4或更低版本,请将ServiceProvider添加到config/app.php中的providers数组中
ElcoBvg\Opcache\ServiceProvider::class,
然后,请确保您将驱动程序选项添加到config/cache.php中的stores数组中
'opcache' => [ 'driver' => 'opcache', ],
并在您的.env文件或config/cache.php中启用驱动程序
OPcache配置
OPcache只能编译为共享扩展。您必须使用--enable-opcache
选项编译PHP,以便OPcache可用。
OPcache必须在php.ini中启用并配置。查找以[OPcache]
开头的部分并输入所需的值。您可以分配给OPcache的内存越多,您的缓存速度就越快。opcache.max_accelerated_files
的值应足够高,以存储所有需要缓存的对象。
由于所有PHP文件都将通过OPcache进行缓存,因此在开发环境中不建议使用它,所以只在生产环境中启用。或者,您可以通过指定带有opcache.blacklist_filename
选项的黑名单文件来排除PHP文件被缓存。
opcache.enable=1 opcache.memory_consumption=512 opcache.interned_strings_buffer=64 opcache.max_accelerated_files=32500 opcache.validate_timestamps=1 opcache.save_comments=1 opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.enable_cli=1
优雅降级:当OPcache未启用或安装,或者内存不足时,此驱动程序仍然可以工作,但将读取缓存文件而不是内存。由于不需要反序列化,它仍然比常规文件缓存驱动程序更快。
缓存Eloquent模型
根据您在项目中配置的缓存方式,您可能想缓存完整的Eloquent模型。如果是这样,请将模型类基于ElcoBvg\Opcache\Model
而不是常规Eloquent基模型类,以便可以从缓存中正确检索它们。