php opcache 配置

系统安装的是php5.5 自带opcache

修改/usr/local/php/etc/php.ini 文件,保存后重启php

配置参数:

opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
配置参数说明:
名字 默认 可修改范围 含义
opcache.enable “1” PHP_INI_ALL 是否启用opcache
opcache.enable_cli “0” PHP_INI_SYSTEM 是否在CLI(即命令行时)启用opcache
opcache.memory_consumption “64” PHP_INI_SYSTEM 为opcache分配多少共享内存,单位M
opcache.interned_strings_buffer “4” PHP_INI_SYSTEM interned string的内存大小
opcache.max_accelerated_files “2000” PHP_INI_SYSTEM 最大缓存的文件数目。

实际上这个值会使用第一个大于你配置的数字的下列素数

{ 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 },

如你将该值指定为400,则实际上该值为463.

opcache.max_wasted_percentage “5” PHP_INI_SYSTEM
opcache.use_cwd “1” PHP_INI_SYSTEM 如果置为1,则将当前路径加入到文件key中,

以避免可能产生的同文件名的文件key冲突

opcache.validate_timestamps “1” PHP_INI_ALL 如果置为1,则OPCACHE会自动检测文件的时间戳

(检测周期为revalidate_freq),

并根据文件的时间戳来更新opcode,如果置为0,

则只能手动去重启opcache或

重启webserver以使更新后的php文件生效

opcache.revalidate_freq “2” PHP_INI_ALL opcache自动检测文件是否更新的周期,单位秒。

如果是0,则每次请求时opcache都要进行检测。

当validate_timestamps为0时,本指令无效。

opcache.revalidate_path “0” PHP_INI_ALL
opcache.save_comments “1” PHP_INI_SYSTEM 是否保存文件中的注释
opcache.load_comments “1” PHP_INI_ALL 是否load comments,与save_comments联合起来使用,

如果该值为0,则即使save_comments为1,

那么php脚本中的comments也是不使用的

opcache.fast_shutdown “0” PHP_INI_SYSTEM 是否打开快速关闭,

打开时可使php在request shutdown时回收内存快

opcache.enable_file_override “0” PHP_INI_SYSTEM 如果置为1,则每次调用file_exist() is_file() is_readable()函数时,

opcache将要检查该文件是否被cache了,

这样增加了检查存在性和可读性的开销,

但避免了当validate_timestamps为disable时返回错误文件状态的风险。

opcache.optimization_level “0xffffffff” PHP_INI_SYSTEM 运行时控制优化的掩码(干什么的?)
opcache.inherited_hack “1” PHP_INI_SYSTEM 5.3以前使用。5.3后废弃
opcache.dups_fix “0” PHP_INI_ALL 为解决“cannot redecllare class” 时,可将其置为1
opcache.blacklist_filename “” PHP_INI_SYSTEM 设置黑名单文件,符合黑名单文件中定义的php文件将不被opcache。黑名单文件的例子如下:

; Matches a specific file.
/var/www/broken.php
; A prefix that matches all files starting with x.
/var/www/x
; A wildcard match.
/var/www/*-broken.php
一行为一条规则,支持通配符,注释以分号开头
opcache.max_file_size “0” PHP_INI_SYSTEM 被cache的文件的最大size,单位bytes。0表示不限
opcache.consistency_checks “0” PHP_INI_ALL 如果置为N,N非零,则opcache会每N个请求核实一下cache的检验和。

这会损害性能,应该只在debug时使用

opcache.force_restart_timeout “180” PHP_INI_SYSTEM 如果opcache处于非active状态,当N秒后opcache将自动重启
opcache.error_log “” PHP_INI_SYSTEM opcache自身的errorlog文件路径,为空时则使用stderr
opcache.log_verbosity_level “1” PHP_INI_SYSTEM 日志记录level,默认只有fatal error和error
opcache.preferred_memory_model “” PHP_INI_SYSTEM opcache首选使用的内存模型,为空时会选择最适当的模型。

常用的有,mmap shm posix 和win32

opcache.protect_memory “0” PHP_INI_SYSTEM 运行php脚本时保护共享内存防止意外的写入。

只对debug时有用。

opcache.mmap_base NULL PHP_INI_SYSTEM

 

linux ubuntu 16.04禁用ipv6功能

打开文件:

/etc/sysctl.d/99-sysctl.conf

在最后追加如下内容:

net.ipv6.conf.all.disable_ipv6 = 1  
net.ipv6.conf.default.disable_ipv6 = 1  
net.ipv6.conf.lo.disable_ipv6 = 1  

保存后执行如下命令更新配置:

sudo sysctl -p

如果需要恢复,只要把那三条删除掉,再重新执行更新命令即可。

 

linux ubuntu系统 apt-get更新错误

执行命令:apt-get update

提示:0% [Connecting to archive.ubuntu.com (2001:67c:1360:8001::17)] [Connecting to s

原因:这个个是ubuntu系统默认为ipv6引起,可以使用命令把apt改为ipv4链接

命令:apt-get -o Acquire::ForceIPv4=true update

mysql异常提示 最终问题数据库分区满

myql错误提示:

Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)

mysqli_real_connect(): (HY000/2002): Connection refused

The server quit without updating PID file

ERROR 2003 (HY000): Can’t connect to MySQL server on ‘127.0.0.1’ (111)

MySQL server PID file could not be found!

phpmyadmin 错误提示:

#2002 – No such file or directory — 服务器没有响应(或本地服务器的套接字没有正确设置)。

mysqli_real_connect(): (HY000/2002): No such file or directory

mysqli_real_connect(): (HY000/2002): Connection refused

网站错误提示:

数据库连接失败(Can not connect to MySQL server)

 

以上所有提示都有可能是服务器数据库所在分区满造成。需要仔细查看服务器空间大小。dt -T 查看所有分区占用情况

 

wordpress 不同的分类页或文章页使用不同的模板

1.不同的分类页,使用不同的分类模板,代码放在category.php中

<?php
global $wp_query;
$cat_ID = get_query_var('cat');

if ( ($cat_ID>385) && ($cat_ID<416) ) {
get_template_part( 'category-384' ); // ID大于385小于416使用category-384.php模板
} elseif(  ($cat_ID>415) && ($cat_ID<419)){
	get_template_part( 'category-385' ); // ID大于415小于419使用category-385.php模板
	}

else {
get_template_part( 'cat' ); // 否则使用文件名为cat.php的模板 
}
?>

2.不同的文章页,根据分类显示不同的模板,代码放在single.php中

<?php
if ( in_category(array('385', '416', '417','418') ) ) {
include(TEMPLATEPATH . '/single-news.php');// ID为385,416,417,418使用single-news.php模板
}
else {
include(TEMPLATEPATH . '/single-anli.php');
}// 否则使用文件名为single-anli.php的模板 

?>

 

wordpresss 头部调用控制 wp_head()

修改代码:

打开 wp-includes 文件夹下的 default-filters.php 注释掉不需要显示的内容

如不需要在页面头部显示emoji表情,直接在调用代码前加入//

// Actions
add_action( 'wp_head', '_wp_render_title_tag', 1 );
add_action( 'wp_head', 'wp_enqueue_scripts', 1 );
add_action( 'wp_head', 'feed_links', 2 );
add_action( 'wp_head', 'feed_links_extra', 3 );
add_action( 'wp_head', 'rsd_link' );
add_action( 'wp_head', 'wlwmanifest_link' );
add_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
add_action( 'wp_head', 'locale_stylesheet' );
add_action( 'publish_future_post', 'check_and_publish_future_post', 10, 1 );
add_action( 'wp_head', 'noindex', 1 );
//add_action( 'wp_head', 'print_emoji_detection_script', 7 );
add_action( 'wp_head', 'wp_print_styles', 8 );
add_action( 'wp_head', 'wp_print_head_scripts', 9 );
add_action( 'wp_head', 'wp_generator' );
add_action( 'wp_head', 'rel_canonical' );
add_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );
add_action( 'wp_head', 'wp_site_icon', 99 );
add_action( 'wp_footer', 'wp_print_footer_scripts', 20 );
add_action( 'template_redirect', 'wp_shortlink_header', 11, 0 );
add_action( 'wp_print_footer_scripts', '_wp_footer_scripts' );
add_action( 'init', 'check_theme_switched', 99 );
add_action( 'after_switch_theme', '_wp_sidebars_changed' );
//add_action( 'wp_print_styles', 'print_emoji_styles' );