首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Opcache不能正常工作

Opcache不能正常工作
EN

Server Fault用户
提问于 2017-12-14 15:14:56
回答 1查看 1.9K关注 0票数 1

我对Opcache有意见。它不像我所希望的那样起作用。

这是我的opcache配置

代码语言:javascript
复制
cat /etc/php/7.1/apache2/php.ini | grep opcache
[opcache]
opcache.enable = 1
opcache.enable_cli = 1
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 8882
;opcache.max_wasted_percentage=5
;opcache.use_cwd=1
opcache.validate_timestamps = 0
opcache.revalidate_freq = 0
;opcache.revalidate_path=0
;opcache.save_comments=1
opcache.fast_shutdown = 1
;opcache.enable_file_override=0
;opcache.optimization_level=0xffffffff
;opcache.inherited_hack=1
;opcache.dups_fix=0
;opcache.blacklist_filename=
;opcache.max_file_size=0
;opcache.consistency_checks=0
;opcache.force_restart_timeout=180
;opcache.error_log=
;opcache.log_verbosity_level=1
;opcache.preferred_memory_model=
;opcache.protect_memory=0
;opcache.restrict_api=
;opcache.mmap_base=
;opcache.file_cache=
;opcache.file_cache_only=0
;opcache.file_cache_consistency_checks=1
; Implies opcache.file_cache_only=1 for a certain process that failed to
;opcache.file_cache_fallback=1
;opcache.huge_code_pages=1
;opcache.validate_permission=0
;opcache.validate_root=0

由于我的设置opcache.validate_timestamps = 0设置为false,据我所知,在使用php函数opcache_reset();发布它之前,修改任何php文件都不会产生任何影响。

因此,我做了一个小测试,我改变了我的index.php文件(通过终端)。我插入了一个方法print_r(opcache_get_status());

其结果是:

代码语言:javascript
复制
array (
    [opcache_enabled] => 1
    [cache_full] => 
    [restart_pending] => 1
    [restart_in_progress] => 
    [memory_usage] => Array
        (
            [used_memory] => 37994008
            [free_memory] => 230441448
            [wasted_memory] => 0
            [current_wasted_percentage] => 0
        )

    [interned_strings_usage] => Array
        (
            [buffer_size] => 16777216
            [used_memory] => 504816
            [free_memory] => 16272400
            [number_of_strings] => 11672
        )

    [opcache_statistics] => Array
        (
            [num_cached_scripts] => 64
            [num_cached_keys] => 111
            [max_cached_keys] => 16229
            [hits] => 0
            [start_time] => 1513234045
            [last_restart_time] => 1513263246
            [oom_restarts] => 0
            [hash_restarts] => 0
            [manual_restarts] => 124
            [misses] => 358
            [blacklist_misses] => 0
            [blacklist_miss_ratio] => 0
            [opcache_hit_rate] => 0
        )

)

我的问题是,print_r(opcache_get_status());的结果不应该是可见的,因为我的opcache.validate_timestamps被设置为false,并且只有当我通过opcache_reset();方法重新加载opcache文件时,更改才会生效。

我是对的还是遗漏了什么?如果您需要更多的信息,请告诉我,我会提供。谢谢!

更新

我发现不是所有的文件都在缓存..。运行下面的命令find . -type f -print | grep php | wc -l报告有6167个php文件,那么为什么只有64个num_cached_scripts

EN

回答 1

Server Fault用户

回答已采纳

发布于 2017-12-15 09:30:12

我发现问题出在哪里了。在编写完代码之后,我发现,在每个请求之后,都有一个实现了opcache_reset();。删除了这一行代码后,缓存就可以工作了。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/888152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档