美文网首页
laravel-opcache 安装残记

laravel-opcache 安装残记

作者: 淡淡de盐 | 来源:发表于2019-11-14 14:47 被阅读0次

开启 OPcache

根据服务器情况修改php.ini

/etc/php/7.2/fpm/php.ini

编辑以上文件,搜索 opcache.enable 将值设为 1 即为开启:

opcache.enable=1

php.ini 里相关的配置以下,注释里包括说明和推荐设置的值,请详细阅读:

; 是否在命令行开启,这里默认设置为 0 ,暂且关闭
;opcache.enable_cli=0

; 这个内存是用来存储编译后的字节码的,视你的程序
; 代码量而定,Laravel 应用一般建议设置为 256,单位 MB,
; 默认是 128
opcache.memory_consumption=256

; 会对程序所有的字符串进行统一存储以加快存取速度,
; 默认是 8m,建议 32 或者不超过 64。
opcache.interned_strings_buffer=32

; 最大加速多少个脚本文件,视项目脚本文件数而定,
; 合理区间 200~1000000 ,默认是 10000 ,建议 500000
opcache.max_accelerated_files=1000000

; 最大作废比例百分比,到达这个比例会重启,默认是 5 ,建议 10
opcache.max_wasted_percentage=10

; 开启情况下会在脚本名称前加上当前目录信息做为缓存的 Key,关闭可以
; 提高性能,但是会面临出错的风险(文件名一致时),建议开启,关闭使用 0
opcache.use_cwd=1

; 开启的话,会按照 opcache.revalidate_freq 设置的频率去检查文件
; 是否修改以便重新缓存,默认开启,生产环境下请设置为关闭,然后
; 写自动化脚本,在每次更新代码后自动重启 OPcache
opcache.validate_timestamps=0

; 文件更新检测频率,单位秒,只有在 opcache.validate_timestamps 
; 开启时才有效。默认为 2,意味着 2 秒钟检查一次,会对文件系统造
; 成负担,如果是在开发环境中请酌情使用,生产环境随意设置,因为
; 我们会设置 validate_timestamps 为关闭。
opcache.revalidate_freq=2200

; 文件加载的逻辑,默认关闭,无需修改
;opcache.revalidate_path=0

; 开启的话会把代码注释一起缓存,关闭可减低内存使用,但是
; 如果有一些代码依赖于注释里的指令,例如 Doctrine, 
; Zend Framework 2 和 PHPUnit,将会出现问题。建议开启
opcache.save_comments=1

修改完成后,需要重启 FPM 生效:

$ service php-fpm restart

在 Laravel 中使用 OPcache

生产环境下,我们一般会将 opcache.validate_timestamp 设置为 0 以获取最大性能。然后在代码变跟时候,再重置 OPcache。

Laravel安装

$  composer require appstract/laravel-opcache
$  php artisan vendor:publish --provider="Appstract\Opcache\OpcacheServiceProvider" --tag="config"

Lumen安装

$  composer require appstract/laravel-opcache
bootstrap 增加注册
$app->configure('opcache');
$app->register(Appstract\Opcache\OpcacheServiceProvider::class);
config 增加配置文件 opcache.php
<?php

return [
    'url'         => env('OPCACHE_URL', config('app.url')),
    'prefix'      => 'opcache-api',
    'verify_ssl'  => true,
    'headers'     => [],
    'directories' => [
        base_path('app'),
        base_path('bootstrap'),
        base_path('public'),
        base_path('routes'),
        base_path('vendor/appstract'),
        base_path('vendor/composer'),
        base_path('vendor/laravel/lumen-framework'),
        base_path('vendor/illuminate'),
        base_path('resources'),
        base_path('storage'),
        base_path('vendor'),
    ],
    'exclude'     => [
        'test',
        'Test',
        'tests',
        'Tests',
        'stub',
        'Stub',
        'stubs',
        'Stubs',
        'Dumper',
    ],
];
因为lumen没有config_path函数,在app下创建helper.php
<?php

if (!function_exists('config_path')) {
    /**
     * Get the configuration path.
     *
     * @param string $path
     *
     * @return string
     */
    function config_path($path = '')
    {
        return app()->basePath() . '/config' . ($path ? '/' . $path : $path);
    }
}
composer.json 增加 files
"autoload": {
    "classmap": [
      "database/seeds",
      "database/factories"
    ],
    "psr-4": {
      "App\\": "app/"
    },
    "files": [
      "app/helper.php"
    ]
  },
运行 composer 命令加载文件
$  composer dump-autoload

每次更新代码都要注意,先清缓存,再整体执行优化,命令:

$  php artisan opcache:clear
$  php artisan opcache:optimize

最后说下我遇到未解决的问题

在服务器上使用 php artisan opcache:clear 时返回错误,[ OPcache not configured ],在查看代码时。发现是 opcache_reset() 函数返回了 false 。最后也没有发现是什么原因造成的,感觉可能是环境问题!

相关文章

  • laravel-opcache 安装残记

    开启 OPcache laravel参考 laravel-opcache 根据服务器情况修改php.ini 编辑以...

  • 修改windows引导管理器为linux引导管理器

    记一次在原有win10基础上安装manjaro双系统,手残经历:安装manjaro时,手残,将efi分区格式化了,...

  • 残记

    次日鼓楼美食宴 慕名叫化初尝鲜 君曰味未曾流连 偶遇猫城概念店 各自留信有悬念 蜡像奇趣体验馆 哥哥妹妹百态显 憨...

  • 雨中残记

    清早起来就听见了舍友大呼下雨了 是的 下雨了 我们是如此的开心 其中喜悦无法言说 这就是军训的盼望 昨天时闺蜜还发...

  • “残假”记

    一 2016年8月26日夜,在时针缓过零点的那一刻,(我...

  • 残文记

    发现笔记本中有篇中学时未写完的文章《看不见的城市》,有无数处被划掉和涂改的地方,一片混乱。原文如下: 卡尔维诺在《...

  • 如梦残记

    如梦残记 读初中的时候背古诗词背到陆放翁的《临江仙》:“二十余年如一梦,此身虽在堪惊。”虽然背得似懂非懂的,但仍然...

  • 春味

    一场春雨一场绿 随风摇曳落花残 记否,记否 曾是花香满街头

  • 残荷

    残叶相依听雨声, 独独不见赏荷人。 犹记昔日...

  • 青春脑残记

    青春脑残记 文/郭俐君 在大众的心目中,女孩子比较细心,尤其是刚参加工作的时候,处处小心,生怕出错被老板炒鱿鱼。 ...

网友评论

      本文标题:laravel-opcache 安装残记

      本文链接:https://www.haomeiwen.com/subject/jferictx.html