未来往事
今天遇到一台AOC显示器显示输入不支援,经过排查为显示器与主机刷新率不匹配导致,解决方法如下:
XP系统 启动时按F8键(在自检画面快结束前,不断地按F8键)选择启动VGA模式,进入系统后修改下分辨率和刷新率(桌面空白处--右击属性--设置--高级--监视器--在设置刷新频率下方的下拉菜单中设置可用的刷新频率)即可。

Win7系统 启动WIndows 7时,按F8键(在自检画面快结束前,不断地按F8键),进入高级启动选项菜单后,选择“启用低分辨率视屏”,进入系统后,重新设定你的分辨率相关设置。
今天在测试以下代码时遇到该错误:
出现错误:
Warning: Cannot modify header information - headers already sent by...

看了一些网上的方法也没解决,最后在php.ini配置output_buffering默认为4096就没有遇到这个错误了:
output_buffering设置说明:
    Off: 表示关闭PHP输出缓存
    On: 打开无限大的输出缓存
    4096: 打开大小为4096Byte的输出缓存

默认情况下,php buffer是开启的,而且该buffer默认值是4096,即4kb。你可以通过在php.ini配置文件中找到output_buffering配置.当echo,print等输出用户数据的时候,输出数据都会写入到php output_buffering中,直到output_buffering写满,会将这些数据通过tcp传送给浏览器显示。你也可以通过ob_start()手动激活php output_buffering机制,使得即便输出超过了4kb数据,也不真的把数据交给tcp传给浏览器,因为ob_start()将php buffer空间设置到了足够大。只有直到脚本结束,或者调用ob_end_flush函数,才会把数据发送给客户端浏览器。
关于output_buffering详细介绍可以参考:
http://hi.baidu.com/sgxdqzktvnbgkqq/item/a7fe4ec955e09f3f449416a5

补充:当然你也可以通过去除BOM解决这个问题,建议以UTF-8无BOM格式编码。感谢 @ihipop 童鞋
关于BOM,简单的来说,软件通过BOM来识别这个文件是否是UTF-8编码。在Firefox早期的版本里,扩展是不能有BOM的,不过Firefox 1.5以后的版本已经开始支持BOM了。现在又发现,PHP也不支持BOM。PHP在设计时就没有考虑BOM的问题,也就是说他不会忽略UTF-8编码的文件开头BOM的那三个字符。
其中有提到另一个麻烦:“受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖COOKIE、SESSION实现的功能全部无效。”这个应该就是Wordpress后台出现空白页面的原因了,因为任何一个被执行的文件包含了BOM,这三个字符都将被送出,导致依赖cookies和session的功能失效,所以你也可能遇到如下错误:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at E:\web\index.php:1) in E:\web\functions\sessions.php on line 39

js 跳到指定页面 不指定

Rinald 本站原创 WEB前端 2013/09/17 17:26
Javascript跳到指定页面的几种常用方法

Tmail RoundCube WebMail完整配置文件批注

1、日志、调试(LOGGING/DEBUGGING)
$rcmail_config['debug_level'] = 1;
system error reporting: 1 = log; 2 = report (not implemented yet), 4 = show, 8 = trace
系统错误日志,1:记录在日志文件中,2:功能未实现,4:在网页中显示,8:追踪

$rcmail_config['log_driver'] = 'file';
log driver:  'syslog' or 'file'.
错误日志存放位置,'file':存放在/logs/error,'syslog':存放系统日志中

$rcmail_config['log_date_format'] = 'Y-M-d H:i:s O';
date format for log entries
日志文件中的时间格式

$rcmail_config['syslog_facility'] = LOG_USER;
Syslog facility to use, if using the 'syslog' log driver.
若使用'syslog'系统日志,则使用的日志工具

$rcmail_config['smtp_log'] = true;
Log sent messages to /sendmail or to syslog
True:把smtp日志记录在/logs/sendmail文件中,False:不记录

$rcmail_config['log_logins'] = true;
Log successful logins to /userlogins or to syslog
True:把用户成功登录日志记录在/logs/sendmail文件中,False:不记录

$rcmail_config['sql_debug'] = false;
Log SQL queries to /sql or to syslog
True:把SQL错误日志记录在/logs/sql文件中,False:不记录

$rcmail_config['imap_debug'] = false;
Log IMAP conversation to /imap or to syslog
True:把imap调试日志记录在/logs/imap文件中,False:不记录

$rcmail_config['ldap_debug'] = false;
Log LDAP conversation to /ldap or to syslog
True:把imap调试日志记录在/logs/imap文件中,False:不记录

$rcmail_config['smtp_debug'] = false;
Log SMTP conversation to /smtp or to syslog
True:把smtp调试日志记录在/logs/ smtp文件中,False:不记录

2、交互式邮件存取协议(IMAP)
$rcmail_config['default_host'] = '192.168.1.253';
the mail host chosen to perform the log-in.leave blank to show a textbox at login, give a list of hosts to display a pulldown menu or set one host as string.To use SSL/TLS connection, enter hostname with prefix ssl:// or tls://.Supported replacement variables:%n - http hostname ($_SERVER['SERVER_NAME']) %d - domain (http hostname without the first part) For example %n = mail.domain.tld, %d = domain.tld
邮件登录主机。’’:在登录是显示一个输入框,字符串数组array(‘x’,’xx’):显示一个下拉菜单,字符串’xx’:则为默认邮箱登录时不显示,SSL/TLS连接:主机名以ssl://或 tls://开头,支持变量替换:%n主机名称($_SERVER['SERVER_NAME']),%d域名,若主机名为mail.domain.tld,%n = mail.domain.tld,,%d = domain.tld。

$rcmail_config['default_port'] = 143;
TCP port used for IMAP connections
Imap端口

$rcmail_config['imap_auth_type'] = null;
IMAP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or empty to use best server supported one)
IMAP AUTH类型,选择服务支持最好的一个

$rcmail_config['imap_delimiter'] = null;
If you know your imap's folder delimiter, you can specify it here.Otherwise it will be determined automatically
如果你知道你的IMAP的文件夹分隔符,你可以在此指定它,否则就让它会自动确定。

$rcmail_config['imap_ns_personal'] = null;
$rcmail_config['imap_ns_other']    = null;
$rcmail_config['imap_ns_shared']   = null;
If IMAP server doesn't support NAMESPACE extension, but you're using shared folders or personal root folder is non-empty, you'll need to set these options. All can be strings or arrays of strings. Folders need to be ended with directory separator, e.g. "INBOX." (special directory "~" is an exception to this rule) These can be used also to overwrite server's namespaces.
如果IMAP服务器不支持命名空间扩展,但你使用共享文件夹或个人的根文件夹是非空,你需要设置这些选项。这些选项的值可以是字符串或字符串数值。文件夹需要以目录分隔符结尾,如“INBOX.”。(特殊的目录"~"是对这一规则的例外),这些也可用于覆盖服务器的命名空间。

$rcmail_config['imap_force_caps'] = false;
By default IMAP capabilities are readed after connection to IMAP server In some cases, e.g. when using IMAP proxy, there's a need to refresh the list after login. Set to True if you've got this case.
在某些情况下连接后服务器后IMAP默认被读取 ,例如当使用IMAP代理,登录后需要刷新列表。若你有这种情况的话就设置为True。

$rcmail_config['imap_force_lsub'] = false;
By default list of subscribed folders is determined using LIST-EXTENDED extension if available. Some servers (dovecot 1.x) returns wrong results for shared namespaces in this case. http://trac.roundcube.net/ticket/1486225 Enable this option to force LSUB command usage instead.
若可用订阅文件夹的默认列表确认被用作名单扩展。在这种情况下一些服务器(dovecot 1. x)返回错误的结果为共同命名空间。

$rcmail_config['imap_timeout'] = 0;
IMAP connection timeout, in seconds. Default: 0 (no limit)
IMAP连接超时时间,秒,默认:0(不限制)。

$rcmail_config['imap_auth_cid'] = null;
Optional IMAP authentication identifier to be used as authorization proxy
可选的IMAP认证标识符作为授权代理

$rcmail_config['imap_auth_pw'] = null;
Optional IMAP authentication password to be used for imap_auth_cid
可选的IMAP认证密码用来作imap_auth_cid

3、简单邮件传输协议(SMTP)
$rcmail_config['smtp_server'] = '192.168.1.253';
SMTP server host (for sending mails). To use SSL/TLS connection, enter hostname with prefix ssl:// or tls://,If left blank, the PHP mail() function is used,Supported replacement variables:%h - user's IMAP hostname,%n - http hostname ($_SERVER['SERVER_NAME']),%d - domain (http hostname without the first part),%z - IMAP domain (IMAP hostname without the first part).For example %n = mail.domain.tld, %d = domain.tld
SMTP服务主机(发送邮件)。SSL/TLS连接:主机名以ssl://或 tls://开头,空白:使用php的main()函数,支持变量替换:%h 用户IMAP主机,%n http主机($_SERVER['SERVER_NAME']),%d域名(没有第一部分的主机名),%z IMAP域名(没有第一部分的IMAP主机名)。若主机名为mail.domain.tld,%n = mail.domain.tld,,%d = domain.tld。

$rcmail_config['smtp_port'] = 25;
SMTP port (default is 25; 465 for SSL)
SMTP端口(默认25;SSL465)

$rcmail_config['smtp_user'] = '';
SMTP username (if required) if you use %u as the username Roundcube will use the current username for login
SMTP用户名(如果需要)如果你使用%u作为用户名,Roundcube将使用当前登录用户。

$rcmail_config['smtp_pass'] = '';
SMTP password (if required) if you use %p as the password Roundcube will use the current user's password for login
SMTP密码(如果需要)如果你使用%p作为密码,Roundcube将使用当前登录用户的密码。

$rcmail_config['smtp_auth_type'] = '';
SMTP AUTH 类型,选择服务支持最好的一个。

$rcmail_config['smtp_auth_cid'] = null;
Optional SMTP authentication identifier to be used as authorization proxy
可选的SMTP认证标识符作为授权代理

$rcmail_config['smtp_auth_pw'] = null;
Optional SMTP authentication password to be used for smtp_auth_cid
可选的SMTP认证密码用来smtp_auth_cid

$rcmail_config['smtp_helo_host'] = '';
SMTP HELO host.Hostname to give to the remote server for SMTP 'HELO' or 'EHLO' messages.  Leave this blank and you will get the server variable 'server_name' or localhost if that isn't defined.
SMTP HELO主机。主机名给远程服务器SMTP 'HELO' 或 'EHLO'消息。空白:你将得到'server_name'服务变量的值,若未定义则得到localhost。

$rcmail_config['smtp_timeout'] = 0;
SMTP connection timeout, in seconds. Default: 0 (no limit)
SMTP连接超时时间,秒,默认:0(不限制)。

[color=#4B0082]4、系统(SYSTEM)
本文档基于Tmail5.0.1 / RoundCube WebMail0.6环境所写。
RoundCube WebMail简介:
RoundCube WebMail是一个基于浏览器,支持多国语言的IMAP客户端,操作界面看起像一个桌面应用程序。它提供一个E-mail客户端应该具备的所有功能包括MIME支持,地址薄,文件夹操作,信息搜索和拼写检查。RoundCube Webmail采用PHP+Ajax开发并且需要MySQL数据库来存储数据。用户界面采用XHTML+CSS2设计。

RoundCube WebMail配置文件路径:
[root@mail /]# cat /tmail/httpd/html/webmail/config/main.inc.php
1.$rcmail_config['default_host'] = 'localhost';    //设置默认邮箱的地址(IMAP服务器的IP)。
2.$rcmail_config['smtp_server'] = 'localhost';    //设置SMTP服务器的地址。
3.$rcmail_config['product_name'] = '未来往事邮局';    //设置本项目名称
4.$rcmail_config['language'] = ‘zh_CN’;    //设置默认语言,默认值为null。

5.邮箱指定
$rcmail_config['drafts_mbox'] = 'Drafts';    //草稿箱
$rcmail_config['junk_mbox'] = 'Spamd';    //垃圾邮件
$rcmail_config['sent_mbox'] = 'Sent';    //已发送邮件
$rcmail_config['trash_mbox'] = 'Trash';    //回收站

6.$rcmail_config['default_charset'] = 'UTF-8';    //默认字符集,默认值ISO-8859-1
7.$rcmail_config['timezone'] = 8;    //默认时区,默认值为'auto'
8.$rcmail_config['prettydate'] = false;    //时间显示格式 true为短格式,false为长格式。

9.几种时间格式
$rcmail_config['date_short'] = 'D H:i';    //短格式时时间显示方式
$rcmail_config['date_long'] = 'd.m.Y H:i';    //长格式时时间显示方式
$rcmail_config['date_today'] = 'H:i';    //今天时间显示方式

10.$rcmail_config['preview_pane'] = true;    //显示预览窗口


Tmail RoundCube WebMail调整界面——自定义图片
1.Logo图片:/tmail/httpd/html/webmail/skins/default/images/roundcube_logo.png
2.水印图片:/tmail/httpd/html/webmail/skins/default/images/watermark.gif
故障描述:
开机启动蓝屏进入系统前蓝屏报如下错误代码:
Stop:C0000135 Unknown Hard Error
Unknown Hard Error

故障分析:
大意是“未知的硬件错误”,因此初步判断是硬件方面出了问题,但是经过初步硬件及系统方面的排查及和用户沟通了解故障发生之前对电脑的操作情况,于是将引起该故障的原因暂时重点定位为那些能引起“硬件错误”的Windows内核文件的破坏或丢失上,通过上网查阅相关资料,发现kernel32等相关内核文件出错容易出现这种现象。
kernel32.dll是Windows系统中非常重要的32位动态链接库文件,属于内核级文件。它控制着系统的内存管理、数据的输入输出操作和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。

解决方法:
找一台正常主机,将C:\windows\system32目录下的kernel32.dll、advapi32.dll、gdi32.dll、user32.dll
四个文件复制到出现故障的主机C:\windows\system32目录下覆盖损坏的文件,也可以从系统光盘中的i386文件夹中找到这四个文件直接复制到出现故障的主机上(可以通过winpe)。
基于CentOS 6.3_X64系统下的Tmail5.0.1安装笔记

系统信息约束:
引用
系统版本:CentOS 6.3 X64
Tmail版本:Tmail 5.0.1 X64
Tmail默认安装在/tmail
Tmail邮件存储目录/data/tmail/
机器IP地址:192.168.1.242
解析域名:mail.fity.cn / fity.cn(MX)
日志文件:/var/log/maillog

一、系统基础环境准备
系统分区(硬盘空间1T):
/  80GB
swap  8G
/boot  200MB
/usr  50GB
/data  剩余所有(用于存放邮件数据)

安装CentOS 6.3_X64 最小安装或者软件工作站

系统装好后删除系统自带MySQL、Postfix、Httpd、Sendmail
rpm -qa |grep mysql |xargs rpm -e --nodeps
rpm -qa |grep postfix |xargs rpm -e --nodeps
rpm -qa |grep mysql |xargs rpm -e --nodeps

二、Tmail5.0.1下载
请先下载Tmail 5.0.1 X64:
http://www.thismail.org/bbs/thread-4587-1-1.html

三、Tmail安装
将tmail_setup.tar.bz2拷贝系统/opt目录下
[root@mail opt]# tar -jxf tmail_setup.tar.bz2
[root@mail opt]# cd tmail_setup
[root@mail opt]# ./install.sh
+----------------------------------------------------------------------+
+----------------------------------------------------------------------+
Sure to install v5.0.1 Release ? [y]/n  输入 y

知道看到

Tmail System Installed Succesfully! ^_^"

就说明安装成功了,安装完成后会在根目录下下生产一个tmail的目录

再增加一个fail2ban的安装包centosX64/rhel6_X64
rpm ivh --force --nodeps  fail2ban-0.8.3-18FT.noarch.rpm

四、打开端口22、25、110、88、443
(如果你使用的是其他端口,请打开相应的端口)
[root@mail opt]# yum install setuptool
[root@mail opt]# setup (机器进入图形界面)

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p udp --sport 22 -j ACCEPT

iptables -A INPUT -m state –state NEW -p tcp –dport 25 -j ACCEPT
iptables -A INPUT -m state –state NEW -p tcp –dport 110 -j ACCEPT

iptables -A INPUT -p tcp -m tcp --sport 88 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 88 -j ACCEPT

iptables -A INPUT -p tcp -m tcp --sport 443 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

五、关闭不用服务
[root@localhost tmp]#ntsysv
如IP6、sendmail等服务(防止端口被占用导致邮件服务收发异常)

六、重启系统

七、状态测试:
测试系统是否已成功监听了以下端口:25、110、88、443
[root@mail ~]# lsof -i:88
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   1151   root    6u  IPv4   8501      0t0  TCP *:kerberos (LISTEN)
nginx   1152 nobody    6u  IPv4   8501      0t0  TCP *:kerberos (LISTEN)
[root@mail ~]# lsof -i:25
COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
master   1358    root   12u  IPv4   8951      0t0  TCP *:smtp (LISTEN)
master   1358    root   13u  IPv6   8953      0t0  TCP *:smtp (LISTEN)
smtpd   32596 postfix    6u  IPv4   8951      0t0  TCP *:smtp (LISTEN)
smtpd   32596 postfix    7u  IPv6   8953      0t0  TCP *:smtp (LISTEN)
[root@mail ~]# lsof -i:110
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
dovecot 1361 root   22u  IPv4   8998      0t0  TCP *:pop3 (LISTEN)
dovecot 1361 root   23u  IPv6   8999      0t0  TCP *:pop3 (LISTEN)

检查日志,确认邮件是否发出
邮件日志:/var/log/maillog
网页错误日志:/tmail/httpd/logs/error.log
[root@mail ~]# tail -f /var/log/maillog
status=sent (250 Ok: queued as )

访问后台
https://IP        //登录时选择管理员,默认为域管理
user:admin
password:hing123

点击在新窗口中浏览此图片


用户登陆
http://IP:88
Tmail Nginx默认配置修改:
[root@mail /]# vi /tmail/httpd/conf/nginx.conf

点击在新窗口中浏览此图片


八、后台配置,主要需要配置以下选项:

点击在新窗口中浏览此图片


1、系统设置:
系统域名:mail.fity.cn
邮件存储目录:/data/tmail

2、域名列表:
删除默认域名:postfix.cn(需要先删除该域下的用户账号)

3、域名增加:
域名:fity.cn
到期日期:永不过期

4、用户增加:
以上设置完成后,对fity.cn域添加个用户进行测试吧
(为了方便测试你可以先禁用域名的dkim、clamav、spamd、BackupMX等)

设置防垃圾邮件
在后台管理spamassassin设置选项中将过滤分数值改为20,(正常邮件都能通过)
[root@mail /]# vi /tmail/spamd/etc/mail/spamassassin/local.cf

设置病毒过滤
[root@mail /]# vi /tmail/clamav/etc/clamd.conf

补充:
1、建议服务器上kill掉spmad进程,非常占用CPU资源。
2、备份tmail整个目录,php.ini、main.cf、nginx.conf等,默认后台备份只备份邮件及数据库。
3、安装完成后建议完善/调整以下几点:
   A. 修改数据库相关默认密码
   B. 删除/tmail/httpd/html/webmail/dbadmin    //phpmyadmin
   C. 删除/tmail/httpd/html/webmail/installer    //安装程序
问题/错误描述:
DiscuzX新用户注册点击提交按钮没有反应;
直接在后台添加用户报如下类似错误:
MySQL Error
Message: MySQL Query Error
SQL:INSERT INTO [Table]members SET secques='', username='', password=''    
Error:Duplicate entry '1472282' for key 'PRIMARY'
Errno:1062

错误分析:
错误提示为键值重复。初步分析原因为:
common_member表中已有uid为1472282用户数据存在
ucenter_members表中无uid为1472282用户数据存在
(主要看uc表中是否已经存在该uid的用户)

发生原因:
可能为discuz升级、用户合并/整合、数据库服务器意外宕机等因素导致

解决方法:
先执行该SQL语句:DELETE FROM `pre_common_setting` WHERE `skey` = 'membersplit';
如果执行后问题依旧,请继续往下阅读。

在执行上述SQL语句后若问题依旧,请继续参考下面给出的解决方法:
把uid为1472282的这个用户删掉或者手动在 uc_members 表中添加该用户即可解决问题。
故障描述:
VMware Workstation9 虚拟机文件复制或移动到其他机器上后网卡重启报如下错误:
Device eth0 does not seem to be present, delaying initialization. [FAILED]

故障分析:
更换机器,网卡的 mac 地址就变换了,该问题是由于 udev 导致。

解决办法:
第一种方法:
可以对照现有的 mac 地址修改 /etc/udev/rules.d/ 目录下的 70-persistent-net.rules 文件(名字可能不一样),将原有插网线的 ethx 的 MAC 地址换成现有的 MAC 地址。

第二种方法,也是最简单的方法、也是博主推荐的方法:
# rm -f /etc/udev/rules.d/70-persistent-net.rules
# reboot
重启之后,系统会自动生成 70-persistent-net.rules 文件。

本文基于CentOS 6.3 环境,据换主板的攻城湿讲在 5.x 的机器上直接将 /etc/sysconfig/network-scripts/ifcfg-ethx 中的 MAC 地址给注释了也是可以的。
Win7由睡眠状态唤醒后无法连上网络,需要重新系统或重启网卡才能联网问题解决

1、升级网卡驱动为最新版驱动
2、把网卡属性的“电源选项”设为 不“允许计算机关闭此设备以节约电源”
Linux统计日志文件中的IP数   linux下用awk统计日志中各个ip访问页面的次数
日志格式:
引用
211.154.151.115 - - [25/Jun/2013:00:00:01 +0800] "GET /SeeHouse/index/childId/17051 HTTP/1.0" 200 10011 "http://fity.cn/17051.html" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; 2345Explorer)" 56.132.231.179

统计结果:
[root@iredmail 06]# awk '{a[$1]+=1;}END{for(i in a){print a[i]" " i;}}' newlog_20130624.log
29 222.73.31.71
17 221.194.30.104
Microsoft Visual Studio 2010编译常见错误:
visual studio 2010 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

详细错误代码:
1>------ 已启动生成: 项目: helloworld, 配置: Debug Win32 ------
1>生成启动时间为 2013/7/2 14:19:10。
1>InitializeBuildStatus:
1>  正在创建“Debug\helloworld.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
1>ClCompile:
1>  所有输出均为最新。
1>  所有输出均为最新。
1>ManifestResourceCompile:
1>  所有输出均为最新。
1>LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
1>
1>生成失败。
1>
1>已用时间 00:00:00.30
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

解决方法如下:
项目 - - 属性 - - 配置属性 - - 清单工具 - - 输入和输出 - - 嵌入清单:原来是“是”,改成“否”。

MySQL HandlerSocket 不指定

Rinald 本站原创 MySQL 2013/06/27 18:56
MySQL HandlerSocket 插件说明与安装配置

一、HandlerSocket是什么?
HandlerSocket是akira higuchi写的一个MySQL的插件。以MySQL Daemon Plugin的形式提供类似NoSQL的网络服务,通过这个插件,你可以直接跟MySQL后端的存储引擎做key-value式的交互,省去了MySQL上层的SQL解释、打开关闭表、创建查询计划等CPU开销。
目前使用MySQL的网站,多半同时使用Memcache作为键值缓存。虽然这样的架构极其流行,有众多成功的案例,但过于依赖Memcache,无形中让Memcache成为故障的根源:
Memcache数据一致性的问题:当MySQL数据变化后,如果不能及时有效的清理掉过期的数据,就会造成数据不一致。这在强调即时性的Web2.0时代,不可取。
Memcache崩溃后的雪崩效应:作为缓存的Memcache一旦崩溃,MySQL很可能在短时间内承受高负载而宕机。
注:关于清理过期数据的问题,可以在程序架构上想办法,如果数据操作有统一DAO封装的话,可以利用Observer模式来清理过期数据,非主题内容,资料自查。
面对以上问题,HandlerSocket项目是个不错的解决方案,它通过插件的方式赋予MySQL完整的NoSQL功能,从原理上讲,它跳过MySQL中最耗时的语法解析,查询计划等步骤,直接读取数据,如果内存够大,能装下索引,MySQL的查询效率能提高若干倍!
HandlerSocket:https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL
php-handlersocket:http://code.google.com/p/php-handlersocket/

系统信息约定:
系统版本:CentOS 6.3 X86
PHP安装目录:/usr/local/webserver/php5318
MySQL安装目录:/usr/local/webserver/mysql5520
HandlerSocket安装路径:/usr/local/webserver/handlersocket

二、安装配置HandlerSocket
安装之前建议你先安装相关支持及需要的组件包:
yum install gcc gcc-c++ libtool make openssl-devel perl-DBI perl-DBD-MySQL
yum install rpm-build gperf readline-devel ncurses-devel time perl-Time-HiRes

1. 安装
如果使用Percona Server版本的MySQL就简单了,因为它已经内置了HandlerSocket支持,不过考虑到其内置的版本不够新,存在一些早已修复的BUG,所以最好采用源代码编译。HandlerSocket是基于MySQL数据库的,因此在安装HanderSocket前需要先按照常规方式部署MySQL服务,同时需注意HandlerSocket时需要MySQL的源码,因此还需要MySQL源码编译方式安装。
[root@iredmail opt]# git clone https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL.git
[root@iredmail opt]# cd HandlerSocket-Plugin-for-MySQL
[root@iredmail HandlerSocket-Plugin-for-MySQL]# ./autogen.sh
[root@iredmail HandlerSocket-Plugin-for-MySQL]#./configure --prefix=/usr/local/webserver/handlersocket --with-mysql-source=/opt/mysql-5.5.20 --with-mysql-bindir=/usr/local/webserver/mysql5520/bin --with-mysql-plugindir=/usr/local/webserver/mysql5520/lib/mysql/plugin
Tips:
--with-mysql-source 指定MySQL源码所在目录
--with-mysql-bindir 表示MySQL二进制可执行文件目录
--with-mysql-plugindir 指定MySQL插件的存储路径,如果不清楚这个目录在哪,可以按如下方法查询:
mysql> show variables like 'plugin%';
+---------------+-------------------------------------------+
| Variable_name | Value                                     |
+---------------+-------------------------------------------+
| plugin_dir    | /usr/local/webserver/mysql5520/lib/plugin |
+---------------+-------------------------------------------+
1 row in set (0.00 sec)
[root@iredmail HandlerSocket-Plugin-for-MySQL]# make
常见错误:
libtool: link: only absolute run-paths are allowed
make[2]: *** [handlersocket.la] Error 1
make[2]: Leaving directory `/opt/HandlerSocket-Plugin-for-MySQL/handlersocket'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/opt/HandlerSocket-Plugin-for-MySQL'
make: *** [all] Error 2
解决方法:
[root@iredmail HandlerSocket-Plugin-for-MySQL]# vi handlersocket/Makefile
line 301:
$(handlersocket_la_LINK) -rpath $(pkgplugindir) $(handlersocket_la_OBJECTS) $(handlersocket_la_LIBADD) $(LIBS)
-->
$(handlersocket_la_LINK) -rpath /opt/HandlerSocket-Plugin-for-MySQL/handlersocket $( handlersocket_la_OBJECTS) $(handlersocket_la_LIBADD) $(LIBS)

[root@iredmail HandlerSocket-Plugin-for-MySQL]#make install
完成后,mysql-plugindir目录下应有handlersocket相关文件

2、配置MySQL:
修改my.cnf配置文件:
[root@iredmail HandlerSocket-Plugin-for-MySQL]# vi /etc/my.cnf
[mysqld]
plugin-load=handlersocket.so(plugin-load可略过不配)
loose_handlersocket_port = 9998 # 指定读请求端口号
# the port number to bind to (for read requests)
loose_handlersocket_port_wr = 9999 # 指定写请求端口号
# the port number to bind to (for write requests)
loose_handlersocket_threads = 16 # 指定读线程数目
# the number of worker threads (for read requests)
loose_handlersocket_threads_wr = 1 # 指定写线程数目
# the number of worker threads (for write requests)
open_files_limit = 65535
# to allow handlersocket accept many concurren connections, make open_files_limit as large as possible.
Tips:InnoDB的innodb_buffer_pool_size,或MyISAM的key_buffy_size等关系到缓存索引的选项尽可能设置大一些,这样才能发挥HandlerSocket的潜力。

登陆MySQL并激活HandlerSocket插件:
[root@iredmail HandlerSocket-Plugin-for-MySQL]# mysql -uroot -p
mysql> install plugin handlersocket soname 'handlersocket.so';
ERROR 1126 (HY000): Can't open shared library '/usr/local/webserver/mysql5520/lib/plugin/handlersocket.so' (errno: 2 cannot open shared object file: No such file or directory)
说明:这里提示没有找到handlersocket.so扩展文件,请查看扩展文件是否存在。
mysql> install plugin handlersocket soname 'handlersocket.so';
Query OK, 0 rows affected (0.00 sec)

mysql> quit;
至此,HandlerSocket插件安装完毕。

重启mysql服务:
[root@iredmail HandlerSocket-Plugin-for-MySQL]# service mysqld restart

3、HandlerSocket状态测试:

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

也可以通过查询刚配置的端口是否已经被MySQL占用来确认是否安装成功:
[root@iredmail HandlerSocket-Plugin-for-MySQL]# lsof -i -P | grep mysqld
mysqld    26871 mysql   11u  IPv4  72467      0t0  TCP *:9998 (LISTEN)
mysqld    26871 mysql   29u  IPv4  72469      0t0  TCP *:9999 (LISTEN)
mysqld    26871 mysql   31u  IPv4  72474      0t0  TCP *:3306 (LISTEN)
Tips:If ports 9998 and 9999 don’t show up.  Make sure SELinux is not running.

三、安装配置 php-handlersocket 扩展模块:
1、安装php-handlersocket扩展
[root@iredmail opt]# wget http://php-handlersocket.googlecode.com/files/php-handlersocket-0.3.1.tar.gz
[root@iredmail opt]# tar -zxvf php-handlersocket-0.3.1.tar.gz
[root@iredmail opt]# cd handlersocket/
[root@iredmail handlersocket]# /usr/local/webserver/php5318/bin/phpize
[root@iredmail handlersocket]# ./configure --with-php-config=/usr/local/webserver/php5318/bin/php-config
./configure可加参数:
点击在新窗口中浏览此图片
Tips:If you get error:
configure: error: Can't find hsclient  headers,please install libhsclient first,Or ./configure--disable-handlersocket-hsclient --with-php-config=/usr/local/webserver/php5318/bin/php-config use native type.
[root@iredmail handlersocket]#make && make install
A successful install will have created handlersocket.so and put it into the PHP extensions directory. You'll need to and adjust php.ini and add an extension=handlersocket.so line before you can use the extension.
[root@iredmail handlersocket]# vi /usr/local/webserver/php5318/etc/php.ini
extension=handlersocket.so

至此php扩展安装完成,放问php.info页面,我们可以看到已经成功加载了handlersocket扩展

点击在新窗口中浏览此图片


2、php-handlersocket 使用示例:
+阅读全文
Memcache是什么?
Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加速动态web应用程序,减轻数据库负载与压力。它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这 些HashTable。
Memcache官方网站:
http://www.danga.com/memcached
http://memcached.org/   更多详细的信息可以来这里了解 :)

Memcached又是什么?
Memcache是该系统的项目名称,Memcached是该系统的主程序文件,以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,使用共享内存存取数据。一个是项目名称,一个是主程序守护进程文件名。

那PHP中的Memcache是什么?
php中的所讲的memcache是用于连接Memecached的客户端组件。
如果你对php扩展模块中的memcache和memcached有疑问,请参考《php模块memcache和memcached区别分析

Windows Memcache安装配置(For PHP5.3)
约定信息:
操作系统Windows7 X64
当前使用PHP版本:php-5.3.26-Win32-VC9-x86
Memcache Server版本:memcached-1.2.6-win32-bin
Memcache Client版本:php_memcache-2.2.6-5.3-vc9-x86(这里需要和PHP版本匹配)
注意:PHP for Win32有两个版本,所以PHP Memcache扩展也相应的有两个版本:
VC9 x86 Non Thread Safe(nts) 和 VC9 x86 Thread Safe

相关软件下载:
PHP程序下载地址:http://windows.php.net/download/
windows版本的Memcached下载地址:http://code.jellycan.com/memcached/
php_memcache.dll下载地址:http://downloads.php.net/pierre/
Tips:请根据本机实际安装的PHP版本选择匹配的php_memcache.dll进行下载,VC9 x86 Non Thread Safe(nts) 和 VC9 x86 Thread Safe。

一、Memcached安装
将下载下来的windows版本的Memcached,解压之后放在硬盘的目录下,这里我放到了D:\phpweb\memcached目录,然后在运行中输入cmd进入命令行,进入到memcached目录中运行以下命令:
安装: memcached.exe –d install
启动:memcached.exe –d start
通过windows任务管理器我们可以看到memcached进程已经在运行了,如图

点击在新窗口中浏览此图片

Tips: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。

二、Memcached for PHP 扩展安装(让PHP加载Memcache)
很简单。不过还没完,你只是安装了一个memcached caching server,还没有和php建立关联。所以在php程序里还不能运用。
1、下载php_memcache.dll,请自己查找对应的php版本的文件http://downloads.php.net/pierre/
2、在你的 php.ini 加入一行 "extension=php_memcache.dll"(不含引号)
3、在php.ini末尾加上
[Memcache]
memcache.allow_failover = 1   //是否在发生错误时(对用户)透明的转移到其他服务器。
memcache.max_failover_attempts=20  //定义在写入和获取数据时最多尝试的服务器次数(即:故障转移最大尝试数),仅和 memcache.allow_failover结合使用。
memcache.chunk_size =8192   //数据传输块大小,这个值越小网络I/O次数越多,如果发现莫名的速度降低, 可以尝试将此值调至32768。
memcache.default_port = 11211   //在尝试连接memcache的时候如果没有单独指定端口默认使用的TCP端口号。
具体运行配置详细可以查看:《PHP: 运行时配置- Manual》
4、重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!

点击在新窗口中浏览此图片

Tips:
-p 监听的端口 -l 连接的IP地址, 默认是本机 -d start 启动memcached服务 -d restart 重起memcached服务 -d stop|shutdown 关闭正在运行的memcached服务 -d install 安装memcached服务 -d uninstall 卸载memcached服务 -u 以的身份运行 (仅在以root运行的时候有效) -m 最大内存使用,单位MB。默认64MB -M 内存耗尽时返回错误,而不是删除项 -c 最大同时连接数,默认是1024 -f 块大小增长因子,默认是1.25 -n 最小分配空间,key+value+flags默认是48 -h 显示帮助

三、Memcache状态测试:
运行下面的php文件,如果有输出This is a test!,就表示环境搭建成功。开始领略Memcache的魅力把!
Tips:第2行部分,connect里面的参数第一个表示服务器地址,第二个表示端口号,具体函数详细说明可以查看:
《PHP: Memcache - Manual》

使用“telnet ip 端口号”,然后使用:stats命令可以看到memcached的使用情况如下:
+阅读全文
红帽发布全新云计算平台 - 未来从未 如此开放
最新解决方案包括Red Hat Enterprise Linux家族和最新产品,意在帮助用户完善从数据中心虚拟化迈向基础架构即服务的旅程

北卡罗来纳州和波士顿-2013年度红帽峰会-2013年6月12日—世界领先的开源解决方案提供商红帽公司(纽交所代码:RHT)今天宣布推出两款最新的产品来实现开放式混合云愿景。新产品包括一款能帮助云用户构建OpenStack 云基础的解决方案Red Hat Enterprise Linux OpenStack Platform和一个专门为支持企业用户从传统数据中心虚拟化向OpenStack云过渡而设计的综合性产品。

新产品是在红帽公司企业级开源解决方案基础上构建的,提供世界级的红帽支持,包括通过红帽OpenStack云基础架构合作伙伴网络内广大的合作伙伴生态系统和专为帮助企业用户能轻松接受OpenStack而设计的各种支持。

Red Hat Enterprise Linux OpenStack Platform将Red Hat Enterprise Linux与OpenStack云平台整合在一起,为构建私有云或者公有云提供可扩展的安全基础。Red Hat Cloud Infrastructure能帮助企业用户部署既适用于传统应用软件又适用于新兴云应用软件的基础架构即服务的解决方案。通过Red Hat Cloud Infrastructure,企业用户可以用他们的方式来迁移最新的云应用软件体系结构:以他们自己的节奏,使用他们自己的IT协议,将一切置于他们自己的控制之下。

Red Hat Enterprise Linux OpenStack Platform

Red Hat Enterprise Linux OpenStack Platform专门为满足高级云用户,电信公司,互联网服务提供商和公有云托管提供商需求而设计的,Red Hat Enterprise Linux OpenStack Platform整合了世界领先的企业级Linux操作系统和行业中成长速度最快的云基础架构平台,帮助企业用户实现平台扩展的灵活性,无需牺牲可用性,安全性和性能即可快速满足用户的需求。

Red Hat Enterprise Linux OpenStack Platform是一款单独订阅的产品,包括:

- Red Hat Enterprise Linux Server,为运行OpenStack工作负载服务器(计算节点,存储节点和控制器节点)和用于客户端虚拟机的可扩展,高性能Linux操作系统提供一个安全的认证基础;

- Red Hat OpenStack,为优化和整合Red Hat Enterprise Linux操作系统来开发和管理用于云工作负载的私有云或者公有云提供一个高度扩展的容错平台。

使用Red Hat Enterprise Linux OpenStack Platform能帮助高级用户开发和配置生产型OpenStack基础架构,专注于服务层,工具的附加价值,在Red Hat Enterprise Linux OpenStack Platform基础上定制用户需求,同时信任红帽来维护Red Hat Enterprise Linux Server和OpenStack节点的完整性。

另外,Red Hat Enterprise Linux OpenStack Platform提供几种企业级特性来帮助企业用户满怀信心的进行配置,包括测试和验证每个在Red Hat Enterprise Linux OpenStack Platform上运行的OpenStack版本,拓宽硬件和软件的兼容性和性能;一个可预测的,稳定的生命周期;SELinux的军事级的安全性;一个广泛的可以认证计算,存储,网络,ISV软件,配置和定制服务的合作伙伴生态系统。

Red Hat Cloud Infrastructure

企业用户已经体验过数据中心虚拟化的优势,也希望能获得更高级别的管理能力,比如费用返还,自助服务,高级监控和测算以及Red Hat CloudForms(目前已经整合了2012年11月红帽收购的ManageIQ技术)提供的协调功能。同时,诸如OpenStack这样的公有云技术可以降低基础架构的成本,高扩展的体系结构和IT即服务的模式。企业用户会面对与管理从传统数据中心虚拟化向云体系结构过渡这一长期过程相关的挑战,同时还要指明将他们的应用软件工作负载从一个体系结构迁移到另一个体系结构的方向,并保证分散平台的可管理性和协议。

Red Hat Cloud Infrastructure是专为满足这种需求而设计的,可以帮助企业用户构建和管理基于数据中心虚拟化和用于传统工作负载的管理技术的私有云基础架构即服务,同时提供诸如基于Red Hat OpenStack的基础架构这种高扩展公有云的发展规划。

Red Hat Cloud Infrastructure是一款由四个组件技术构成的单独订阅产品:

- Red Hat Enterprise Virtualization:一款适用于Linux 和Windows工作负载的综合性数据中心虚拟化产品,能帮助用户构建一个满足传统企业级应用软件工作负载需求的安全,灵活的虚拟化基础。

- Red Hat CloudForms:是一款开放式的混合云管理解决方案,能为用户提供对现有多样化虚拟基础架构的可视性和控制,帮助用户配置,监控和管理涵盖Red Hat Enterprise Virtualization, VMware vSphere和其他虚拟化解决方案,管理程序和平台的云服务。

- Red Hat OpenStack:是一款高扩展的基础架构即服务解决方案,能帮助用户奠定一个开放的,灵活的,企业级的私有云基础。

- Red Hat Enterprise Linux Server,是世界领先的企业级Linux操作系统,是可用于在OpenStack计算平台上运行的客户端虚拟机的可扩展的,高性能Linux操作系统。

上市时间

Red Hat Enterprise Linux OpenStack Platform和Red Hat Cloud Infrastructure将于2013年7月上市。
+阅读全文
第14页 / 共35页 第一页 « 上一页 9 10 11 12 13 14 15 16 17 18 下一页 » 最后页 [ 显示模式: 摘要 | 列表 ]