背景:做客户端时在开始的程序菜单里往往会放一个.url的文件,指引用户点击到软件主页上。有时会出现.url文件没有图标。
阅读全文
阅读全文
背景:防止盗链,大多数能搞定,但防止抓取有些困难。curl 模拟浏览器头和refer及Curl模仿http浏览器常见命令:http://www.jackxiang.com/post/6641/
.htaccess
DirectoryIndex search.php
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^$ [NC]
RewriteCond %{HTTP_REFERER} !^http://你的网站IP [NC,OR]
RewriteRule ^search_result.php search.php
如果HTTP_REFERER为空或者与指定的网站IP不匹配。访问search_result.php时跳到search.php.
[NC] ,[OR]这个我也不太懂。望高手指点下。
摘自:http://yulei568.blog.163.com/blog/static/135886720084231390136/
更多相关:http://www.jb51.net/os/RedHat/1060.html
.htaccess
DirectoryIndex search.php
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^$ [NC]
RewriteCond %{HTTP_REFERER} !^http://你的网站IP [NC,OR]
RewriteRule ^search_result.php search.php
如果HTTP_REFERER为空或者与指定的网站IP不匹配。访问search_result.php时跳到search.php.
[NC] ,[OR]这个我也不太懂。望高手指点下。
摘自:http://yulei568.blog.163.com/blog/static/135886720084231390136/
更多相关:http://www.jb51.net/os/RedHat/1060.html
关于Sina Weibo PHPSDK里的php <?= > 输出不了的问题
Php/Js/Shell/Go jackxiang 2014-4-13 14:13
背景:下了一个新浪微博的PHPSDK,里面有<?=$a?>输出,但是我用的wamp套件输出不了,换成echo就能输出来。
php <?= > 问题
$i = o;<?= $i ?>为什么输不出来结果呢?换成echo就能输出来,我很奇怪,是不是我的配置文件没配好,请大家帮帮我!谢谢
在php.ini文件中设置short_open_tag为on即可,但是不建议使用这种简短风格的写法!
规范写法:<?php echo $i; ?>
————————————————————————————————————
解决方法:
wamp默 认有2个地方
; - short_open_tag = Off [Portability]
short_open_tag = Off
当 在wamp里php里勾选short open tag时,这两个地方都变成On
需要改2个地方吗?验证ing
; - short_open_tag = Off [Portability]
short_open_tag = On 不行,重启也不行
; - short_open_tag = On [Portability]
short_open_tag = On 不行,重启也不行
把 php里的short open tag勾选了,才行,php.ini都是On,其他并未改变,难道还有别的文件?
搜索发现有2个 php.ini
C:\wamp\bin\php\php5.2.8
C:\wamp\bin\apache\Apache2.2.11\bin
现 在wamp里勾选,apache文件夹里的ini变成2个on,php文件夹里的还是off。
使用phpinfo查看,最终证明只有 C:\wamp\bin\apache\Apache2.2.11\bin\php.ini里的一个short_open_tag = On管用,而且编辑文本不会使wamp的勾选变化。
要在PHP文件中的PHP.INI文件改了才起作用.
摘自:http://hi.baidu.com/123123la/item/e84c431eb823f9fe65eabf98
实践如下:
打开wamp后,在任务栏里左键,找到PHP项,后在PHP-》PHP设置里的short open tag勾选上。
short_open_tag = On //如只编辑php.ini的文本不会使wamp的勾选变化。
php <?= > 问题
$i = o;<?= $i ?>为什么输不出来结果呢?换成echo就能输出来,我很奇怪,是不是我的配置文件没配好,请大家帮帮我!谢谢
在php.ini文件中设置short_open_tag为on即可,但是不建议使用这种简短风格的写法!
规范写法:<?php echo $i; ?>
————————————————————————————————————
解决方法:
wamp默 认有2个地方
; - short_open_tag = Off [Portability]
short_open_tag = Off
当 在wamp里php里勾选short open tag时,这两个地方都变成On
需要改2个地方吗?验证ing
; - short_open_tag = Off [Portability]
short_open_tag = On 不行,重启也不行
; - short_open_tag = On [Portability]
short_open_tag = On 不行,重启也不行
把 php里的short open tag勾选了,才行,php.ini都是On,其他并未改变,难道还有别的文件?
搜索发现有2个 php.ini
C:\wamp\bin\php\php5.2.8
C:\wamp\bin\apache\Apache2.2.11\bin
现 在wamp里勾选,apache文件夹里的ini变成2个on,php文件夹里的还是off。
使用phpinfo查看,最终证明只有 C:\wamp\bin\apache\Apache2.2.11\bin\php.ini里的一个short_open_tag = On管用,而且编辑文本不会使wamp的勾选变化。
要在PHP文件中的PHP.INI文件改了才起作用.
摘自:http://hi.baidu.com/123123la/item/e84c431eb823f9fe65eabf98
实践如下:
打开wamp后,在任务栏里左键,找到PHP项,后在PHP-》PHP设置里的short open tag勾选上。
short_open_tag = On //如只编辑php.ini的文本不会使wamp的勾选变化。
基于统计的冗余设计
如:
count(*)操作。
需要不精准结果,可以直接show table status like …获得。
需要精准结果,可以在缓存层增加key-value对,实时更新该key-value。同时异步更新到数据库中冗余字段,或冗余表中。
查询数据表有多少行,多少容量
不要使用select count(*)
使用show table status like ‘table_name’ 但是innodb的话会有50%左右的浮动,是个预估值
阅读全文
如:
count(*)操作。
需要不精准结果,可以直接show table status like …获得。
需要精准结果,可以在缓存层增加key-value对,实时更新该key-value。同时异步更新到数据库中冗余字段,或冗余表中。
查询数据表有多少行,多少容量
不要使用select count(*)
使用show table status like ‘table_name’ 但是innodb的话会有50%左右的浮动,是个预估值
阅读全文
近来翻墙后访问facebook后,突然跑到: www.facebook.com.gos.saveinter.net,一看就不是 facebook 啊,saveinter.net 是挂在 GODADDY.COM 服务提供商下面的网站,Facebook 需要 godaddy 提供服务? 可以直接判定为钓鱼了!此网站是一个钓鱼网站无误。
最后,无论域名多少长,最后的两位才是真正的有效域名,比如这个域名中的 saveinter.net 就是一个例子,无论前面有多长的字符都是 saveinter.net 的二级域名。二级域名表明都是 saveinter.net 的子域,跟 facebook.com 毫无关系,无论前面提到了 facebook.com 什么云云。都是忽悠的,这就是传中的钓鱼,呵呵。网上不安全,时刻要警醒。
最后,无论域名多少长,最后的两位才是真正的有效域名,比如这个域名中的 saveinter.net 就是一个例子,无论前面有多长的字符都是 saveinter.net 的二级域名。二级域名表明都是 saveinter.net 的子域,跟 facebook.com 毫无关系,无论前面提到了 facebook.com 什么云云。都是忽悠的,这就是传中的钓鱼,呵呵。网上不安全,时刻要警醒。
背景:
Linux 下的权限比较起Windows是个问题,但它保证了其安全性,Cache 会出现 chmod(): Operation not permitted 这个讯息。查看 cache 目录应该是 PHP 以 safe mode 执行的关系,所以没办法建出 777 权限目录。
php -i|grep safe_mode
safe_mode => Off => Off
—————————————————想办法以try catch实现抓权限———————————————————————————
问:PHP在Linux下以www运行为了确保你要读取的WEB页面可以访问,如何才能获得文件的相关属性?
答:PHP提供了一组获得文件属性的方法,例如 filemtime(),fileowner(),filegroup(),filectime(),fileatime()...详细的使用请参阅手册。
来自:http://jingyan.baidu.com/article/bea41d4346a1b2b4c51be6a1.html
文件:fileowner.php
运行:
php fileowner.php
48
48是谁?
vi /etc/passwd 找48即可,是www,如下:
www:x:48:48::/home/www:/sbin/nologin
更多函数一块写:
文件:fileInfo.php
运行情况:
文件拥有者id:48
文件属组id:48
文件权限值:0644
更多PHP手册函数:
http://www.wapm.cn/phpdoc/zh/function.fileperms.html
http://www.w3school.com.cn/php/func_filesystem_filegroup.asp
http://www.w3school.com.cn/php/func_filesystem_fileowner.asp
php异常捕获try catch实例解析:
http://www.jbxue.com/article/10331.html
—————————————————以try catch实现对其权限不够的不活并写入日志—————————————————
permitted.php
这块故意给它一个root权限,chown -R root permitted.php
去执行和写的权限:chmod a-xw permitted.txt
在web下运行结果,tail -f /tmp/logPermissionFile4My.txt :
DateTime:2014-03-25 13:23:22
Error on line 7 in /data/htdocs/tools.jackxiang.com/fileowner.php, ErrorException[Warning]:chmod():Operation not permitted
文件拥有者id:0
文件属组id:0
文件权限值:0444
Linux 下的权限比较起Windows是个问题,但它保证了其安全性,Cache 会出现 chmod(): Operation not permitted 这个讯息。查看 cache 目录应该是 PHP 以 safe mode 执行的关系,所以没办法建出 777 权限目录。
php -i|grep safe_mode
safe_mode => Off => Off
—————————————————想办法以try catch实现抓权限———————————————————————————
问:PHP在Linux下以www运行为了确保你要读取的WEB页面可以访问,如何才能获得文件的相关属性?
答:PHP提供了一组获得文件属性的方法,例如 filemtime(),fileowner(),filegroup(),filectime(),fileatime()...详细的使用请参阅手册。
来自:http://jingyan.baidu.com/article/bea41d4346a1b2b4c51be6a1.html
文件:fileowner.php
运行:
php fileowner.php
48
48是谁?
vi /etc/passwd 找48即可,是www,如下:
www:x:48:48::/home/www:/sbin/nologin
更多函数一块写:
文件:fileInfo.php
运行情况:
文件拥有者id:48
文件属组id:48
文件权限值:0644
更多PHP手册函数:
http://www.wapm.cn/phpdoc/zh/function.fileperms.html
http://www.w3school.com.cn/php/func_filesystem_filegroup.asp
http://www.w3school.com.cn/php/func_filesystem_fileowner.asp
php异常捕获try catch实例解析:
http://www.jbxue.com/article/10331.html
—————————————————以try catch实现对其权限不够的不活并写入日志—————————————————
permitted.php
这块故意给它一个root权限,chown -R root permitted.php
去执行和写的权限:chmod a-xw permitted.txt
在web下运行结果,tail -f /tmp/logPermissionFile4My.txt :
DateTime:2014-03-25 13:23:22
Error on line 7 in /data/htdocs/tools.jackxiang.com/fileowner.php, ErrorException[Warning]:chmod():Operation not permitted
文件拥有者id:0
文件属组id:0
文件权限值:0444
js detect image 404,read the HTTP header to check for 404 with jQuery without performing an ajax request
Php/Js/Shell/Go jackxiang 2014-3-24 18:02
js detect image 404:
一、用Ajax,代码量较长:
二、用图像的onerror函数实现判断404,实践OK:
_________________________________________________________________________
来自:http://forums.mozillazine.org/viewtopic.php?f=25&t=315570
Hello All,
can do this either by Jquery or Javascript...
来自:
http://www.coderanch.com/t/624410/HTML-CSS-JavaScript/check-url-returns-error-status
一、用Ajax,代码量较长:
二、用图像的onerror函数实现判断404,实践OK:
_________________________________________________________________________
来自:http://forums.mozillazine.org/viewtopic.php?f=25&t=315570
Hello All,
can do this either by Jquery or Javascript...
来自:
http://www.coderanch.com/t/624410/HTML-CSS-JavaScript/check-url-returns-error-status
[实践OK]PHP 遇到mysql header不致的问题:Headers and client library minor version mismatch是myql不同版本同在一台机器上导致的,如何卸载重新安装以成功避免。
Php/Js/Shell/Go jackxiang 2014-3-19 16:10
Percona MySQL 升級 5.6 後, PHP 的 mysql_connect() 就出現下述警告(Warning)訊息:
PHP Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50531 Library:50613 ...
Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50153 Library:50613 in /data/htdocs/jackxiang.com/libraries/database/mysqlrw.php on line 271
要如何解決?
实践Ok步骤及注意点:
第一点:出现这种情况的可能性必定是因为这个Linux不是纯净的Linux,里面以前有rpm,或低版本的Mysql安装,如何解决之:
第一步:干掉所有的mysql相关的rpm包:
rpm -qa | grep -i mysql | xargs rpm -e --allmatches --nodeps
第二步:是干掉所有相关mysql的各种通过源码安装的安装包及动态库:
find /usr -name "mysql" -exec rm -rf {} \;
find /usr -name "my*" -exec rm {} \;
这下一下子就清静了。
注意点:
1)有可能出现你是干掉了,但是你再安装时还是出现上述错误,为何:
这涉及到有可能关于编译make的问题,makefile如果你颠倒了(也就是你先编译后,再去删除mysql,重新编译(没有clean掉生成的so,.a),因为之前编译的还在,它引用的还是原来的那个mysql header,依旧不行滴。),为此,你得先干死mysql,php,然后是把它们的目录挪动到加上-bak的,如:mysql-bak。
2)把源码包删除掉,重新tar 解压出一份目录,mysql再cmake,php再进行./configure。当然,如果通过make clean能清完,也可以不用删除再重新解包,我是直接删除,再完全重新编译。
总之,不能让先前安装好的包,先前编译的源码包里沾染上原来旧版本的mysql包,这才是核心,否则,编译出来问题依旧,达不到想要的目的。阅读全文
PHP Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50531 Library:50613 ...
Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50153 Library:50613 in /data/htdocs/jackxiang.com/libraries/database/mysqlrw.php on line 271
要如何解決?
实践Ok步骤及注意点:
第一点:出现这种情况的可能性必定是因为这个Linux不是纯净的Linux,里面以前有rpm,或低版本的Mysql安装,如何解决之:
第一步:干掉所有的mysql相关的rpm包:
rpm -qa | grep -i mysql | xargs rpm -e --allmatches --nodeps
第二步:是干掉所有相关mysql的各种通过源码安装的安装包及动态库:
find /usr -name "mysql" -exec rm -rf {} \;
find /usr -name "my*" -exec rm {} \;
这下一下子就清静了。
注意点:
1)有可能出现你是干掉了,但是你再安装时还是出现上述错误,为何:
这涉及到有可能关于编译make的问题,makefile如果你颠倒了(也就是你先编译后,再去删除mysql,重新编译(没有clean掉生成的so,.a),因为之前编译的还在,它引用的还是原来的那个mysql header,依旧不行滴。),为此,你得先干死mysql,php,然后是把它们的目录挪动到加上-bak的,如:mysql-bak。
2)把源码包删除掉,重新tar 解压出一份目录,mysql再cmake,php再进行./configure。当然,如果通过make clean能清完,也可以不用删除再重新解包,我是直接删除,再完全重新编译。
总之,不能让先前安装好的包,先前编译的源码包里沾染上原来旧版本的mysql包,这才是核心,否则,编译出来问题依旧,达不到想要的目的。阅读全文
解决 maps to localhost, but this does not map back to the address
Unix/LinuxC技术 jackxiang 2014-3-19 14:33
修改 /etc/ssh/ssh_config
vim /etc/ssh/ssh_config
GSSAPIAuthentication no
----------------------------------
修改 /etc/ssh/ssh_config
vim /etc/ssh/ssh_config
在server 把GSSAPIAuthentication yes
后面的yes 改成no
然后/etc/init.d/sshd restart
来自:http://jafy00.blog.51cto.com/2594646/810716
http://fleiou2008.blog.163.com/blog/static/819810172012631111922846/
vim /etc/ssh/ssh_config
GSSAPIAuthentication no
----------------------------------
修改 /etc/ssh/ssh_config
vim /etc/ssh/ssh_config
在server 把GSSAPIAuthentication yes
后面的yes 改成no
然后/etc/init.d/sshd restart
来自:http://jafy00.blog.51cto.com/2594646/810716
http://fleiou2008.blog.163.com/blog/static/819810172012631111922846/
Fix broken UTF8 encoded RSS feeds in php,RSS出现“Input is not proper UTF-8, indicate encoding !”的解决方法。
Php/Js/Shell/Go jackxiang 2014-3-19 10:14
背景:输出xml提示:error on line 323 at column 23: Input is not proper UTF-8, indicate encoding !<username><![CDATA[*这儿有一个隐藏字符*執↘著]]></username>,去掉就好了,但是这个是用户的输入。
RSS出现“Input is not proper UTF-8, indicate encoding !”的解决方法:
This page contains the following errors:
error on line 402 at column 25: Input is not proper UTF-8, indicate encoding !
Bytes: 0×07 0×43 0×68 0×61
Below is a rendering of the page up to the first error.
搜索一下,说是内容中有不完整的utf8字符导致xml解析器出错。
根据提示的错误位置,把附近的文字复制到Emeditor中,那个隐藏的不完整字符出现了,Emeditor中是用一个大黑点表示的,删除后把文本复制回去,搞定。
上面这个不是长久办法,最后一老外有一篇文章:
http://www.mybelovedphp.com/2009/07/03/fix-broken-utf8-encoded-rss-feeds-in-php/
RSS出现“Input is not proper UTF-8, indicate encoding !”的解决方法:
This page contains the following errors:
error on line 402 at column 25: Input is not proper UTF-8, indicate encoding !
Bytes: 0×07 0×43 0×68 0×61
Below is a rendering of the page up to the first error.
搜索一下,说是内容中有不完整的utf8字符导致xml解析器出错。
根据提示的错误位置,把附近的文字复制到Emeditor中,那个隐藏的不完整字符出现了,Emeditor中是用一个大黑点表示的,删除后把文本复制回去,搞定。
上面这个不是长久办法,最后一老外有一篇文章:
http://www.mybelovedphp.com/2009/07/03/fix-broken-utf8-encoded-rss-feeds-in-php/
linux shell 脚本实现监听端口的shel协议通讯(重定向应用)。
Unix/LinuxC技术 jackxiang 2014-3-17 22:04
零、一段监听端口的shell:
摘自:http://ajiewps.sinaapp.com/?p=266
一、通过shell脚本重定向实现监控memcache状态:
通过nc命令实现:
[chengmo@centos5 shell]$ (echo "stats")|nc 127.0.0.1 11211
二、通过重定向读取远程web服务器头信息:
(echo -e "HEAD / HTTP/1.1\n\n\n\n\n";sleep 2)|telnet www.baidu.com 80
参考:http://www.cnblogs.com/chengmo/archive/2010/10/22/1858302.html
摘自:http://ajiewps.sinaapp.com/?p=266
一、通过shell脚本重定向实现监控memcache状态:
通过nc命令实现:
[chengmo@centos5 shell]$ (echo "stats")|nc 127.0.0.1 11211
二、通过重定向读取远程web服务器头信息:
(echo -e "HEAD / HTTP/1.1\n\n\n\n\n";sleep 2)|telnet www.baidu.com 80
参考:http://www.cnblogs.com/chengmo/archive/2010/10/22/1858302.html
MD5数值大小写有关系吗?无!php-md5变换算法之大小写变换干涉代码。
Php/Js/Shell/Go jackxiang 2014-3-14 17:11
背景:外包对下一个客户端的MD5值里的字母是大小写敏感,说道:你的md5怎么给成大写的了?之前不是给的小写的?我是想问一下你们 这个值确定是大写还是小写 还是不确定?我的回答是:我想说的是你得兼容。
C++也有PHP这样的类似函数:http://www.zedwood.com/article/cpp-strtoupper-function
Continuing on with our efforts to replicate the php string manipulation with C++ and the STL, I have implemented strtoupper() and strtolower();
由于PHP所提供的md5()函数返回的密文中的英文字母全部都是小写的,因此我们可以把它们全部转为大写,然后再进行一次MD5运算。
来自:
http://zhidao.baidu.com/question/54522503.html
http://www.oschina.net/code/snippet_59519_2946
C++也有PHP这样的类似函数:http://www.zedwood.com/article/cpp-strtoupper-function
Continuing on with our efforts to replicate the php string manipulation with C++ and the STL, I have implemented strtoupper() and strtolower();
由于PHP所提供的md5()函数返回的密文中的英文字母全部都是小写的,因此我们可以把它们全部转为大写,然后再进行一次MD5运算。
来自:
http://zhidao.baidu.com/question/54522503.html
http://www.oschina.net/code/snippet_59519_2946
https其实就是建构在 ssl 层之上的 http协议,所以要比较https比http多用多少服务器资源,主要看 ssl 本身消耗多少服务器资源。
http使用TCP 三次握手建立连接,客户端和服务器需要交换3个包,https除了 TCP 的三个包,还要加上 ssl握手需要的9个包,所以一共是12个包。http 建立连接,按照下面链接中针对Computer Science House的测试,是114毫秒;https建立连接,耗费436毫秒。ssl 部分花费322毫秒,包括网络延时和ssl 本身加解密的开销(服务器根据客户端的信息确定是否需要生成新的主密钥;服务器回复该主密钥,并返回给客户端一个用主密钥认证的信息;服务器向客户端请求数字签名和公开密钥)。
SSL handshake latency and HTTPS optimizations. :: semicomplete.com
当SSL 连接建立后,之后的加密方式就变成了3DES等对于 CPU 负荷较轻的对称加密方式。相对前面 SSL 建立连接时的非对称加密方式,对称加密方式对 CPU 的负荷基本可以忽略不记,所以问题就来了,如果频繁的重建 ssl 的session,对于服务器性能的影响将会是致命的,尽管打开https 保活可以缓解单个连接的性能问题,但是对于并发访问用户数极多的大型网站,基于负荷分担的独立的SSL termination proxy就显得必不可少了,Web 服务放在SSL termination proxy之后。SSL termination proxy既可以是基于硬件的,譬如F5;也可以是基于软件的,譬如维基百科用到的就是 Nginx,参见下面的链接说明:
SSL termination proxy
那采用 https 后,到底会多用多少服务器资源,2010年1月 Gmail切换到完全使用 https, 前端处理 SSL 机器的CPU 负荷增加不超过1%,每个连接的内存消耗少于20KB,网络流量增加少于2%。由于 Gmail 应该是使用N台服务器分布式处理,所以CPU 负荷的数据并不具有太多的参考意义,每个连接内存消耗和网络流量数据有参考意义。这篇文章中还列出了单核每秒大概处理1500次握手(针对1024-bit 的 RSA),这个数据很有参考意义,具体信息来源的英文网址:ImperialViolet。
可能看了上面的描述,有些概念过于专业,所以想讲一个故事让大家比较好理解:
从前山上有座庙,庙里有个和尚......,别胡闹了,老和尚来了。
小和尚问老和尚:ssl为什么会让http安全?
老和尚答道:譬如你我都有一个同样的密码,我发信给你时用这个密码加密,你收到我发的信,用这个密码解密,就能知道我信的内容,其他的闲杂人等,就算偷偷拿到了信,由于不知道这个密码,也只能望信兴叹,这个密码就叫做对称密码。ssl使用对称密码对http内容进行加解密,所以让http安全了,常用的加解密算法主要有3DES和AES等。
小和尚摸摸脑袋问老和尚:师傅,如果我们两人选择“和尚”作为密码,再创造一个和尚算法,我们俩之间的通信不就高枕无忧了?
老和尚当头给了小和尚一戒尺:那我要给山下的小花写情书,还得用“和尚”这个密码不成?想了想又给了小和尚一戒尺:虽然我们是和尚,不是码农,也不能自己造轮子,当初一堆牛人码农造出了Wifi的安全算法WEP,后来发现是一绣花枕头,在安全界传为笑谈;况且小花只知道3DES和AES,哪知道和尚算法?
小和尚问到:那师傅何解?
老和尚:我和小花只要知道每封信的密码,就可以读到对方加密的信件,关键是我们互相之间怎么知道这个对称密码。你说,我要是将密码写封信给她,信被别人偷了,那大家不都知道我们的密码了,也就能够读懂我们情书了。不过还是有解的,这里我用到了江湖中秘传的非对称密码。我现在手头有两个密码,一个叫“公钥”,一个叫“私钥”,公钥发布到了江湖上,好多人都知道,私钥嘛,江湖上只有我一个人知道;这两个密钥有数学相关性,就是说用公钥加密的信件,可以用私钥解开,但是用公钥却解不开。公钥小花是知道的,她每次给我写信,都要我的公钥加密她的对称密码,单独写一张密码纸,然后用她的对称密码加密她的信件,这样我用我的私钥可以解出这个对称密码,再用这个对称密码来解密她的信件。
老和尚顿了顿:可惜她用的对称密码老是“和尚为什么写情书”这一类,所以我每次解开密码纸时总是怅然若失,其实我钟意的对称密码是诸如“风花”“雪月”什么的,最头痛的是,我还不得不用“和尚为什么写情书”这个密码来加密我给小花回的情书,人世间最痛苦的事莫过于如此。可有一次出意外了,山下的张屠夫给了小花他自己的公钥,谎称的我公钥刚刚更新了,小花后面给我的信的密码都用这个加密,然后张屠夫用他自己的私钥解开小花的对称密码后,不仅看到了小花的信件,还用这个密码给小花发了很多下流的信,同时也用这个密码伪造了一封小花给我的绝交信,直到三个月之后才真相大白。有此教训后,我重新发布到江湖的公钥,上面都有嵩山少林寺的火印,没有火印的公钥,大家不再相信是我的,可是从此之后,我在江湖已经没有名声,也好久没有收到过情书。
小和尚问:那然后呢?
老和尚:过了一年才知道,其实小花还是给我写过信的,当时信确实是用有火印的公钥加密,张屠夫偷到信后,由于不知道我的私钥,解不开小花的密码信,所以一怒之下将信件全部烧毁了。也由于张屠夫无法知道小花的对称密码而无法回信,小花发出几封信后石沉大海,也心生疑惑,到处打听我的近况。这下张屠夫急了,他使用我发布的公钥,仿照小花的语气,给我发来一封信。拿到信时我就觉得奇怪,信纸上怎么有一股猪油的味道,结尾竟然还关切的询问我的私钥。情知有诈,我思量无论如何要找到办法让我知道来的信是否真是小花所写。后来竟然让我想到了办法....
老和尚摸着光头说:这头发可不是白掉的,我托香客给小花带话,我一切安好,希望她也拥有属于自己的一段幸福,不对,是一对非对称密钥。小花委托小镇美女协会给小花公钥打上火印后,托香客给我送来,这样小花在每次给我写信时,都会在密码纸上贴上一朵小牡丹,牡丹上写上用她自己的私钥加密过的给我的留言,这样我收到自称是小花的信后,我会先抽出密码纸,取下小牡丹,使用小花的公钥解密这段留言,如果解不出来,我会直接将整封信连同密码纸一起扔掉,因为这封信一定不是小花写的,如果能够解出来,这封信才能确信来之于小花,我才仔细的解码阅读。
小和尚:难怪听说张屠夫是被活活气死的。您这情书整的,我头都大了,我长大后,有想法直接扯着嗓子对山下喊,也省的这么些麻烦。不过我倒是明白了楼上的话,ssl 握手阶段,就是要解决什么看火印,读牡丹,解密码纸,确实够麻烦的,所以性能瓶颈在这里,一旦双方都知道了对称密码,之后就是行云流水的解码读信阶段了,相对轻松很多。
来自膘哥的博客:http://www.neatstudio.com/show-2534-1.shtml
http使用TCP 三次握手建立连接,客户端和服务器需要交换3个包,https除了 TCP 的三个包,还要加上 ssl握手需要的9个包,所以一共是12个包。http 建立连接,按照下面链接中针对Computer Science House的测试,是114毫秒;https建立连接,耗费436毫秒。ssl 部分花费322毫秒,包括网络延时和ssl 本身加解密的开销(服务器根据客户端的信息确定是否需要生成新的主密钥;服务器回复该主密钥,并返回给客户端一个用主密钥认证的信息;服务器向客户端请求数字签名和公开密钥)。
SSL handshake latency and HTTPS optimizations. :: semicomplete.com
当SSL 连接建立后,之后的加密方式就变成了3DES等对于 CPU 负荷较轻的对称加密方式。相对前面 SSL 建立连接时的非对称加密方式,对称加密方式对 CPU 的负荷基本可以忽略不记,所以问题就来了,如果频繁的重建 ssl 的session,对于服务器性能的影响将会是致命的,尽管打开https 保活可以缓解单个连接的性能问题,但是对于并发访问用户数极多的大型网站,基于负荷分担的独立的SSL termination proxy就显得必不可少了,Web 服务放在SSL termination proxy之后。SSL termination proxy既可以是基于硬件的,譬如F5;也可以是基于软件的,譬如维基百科用到的就是 Nginx,参见下面的链接说明:
SSL termination proxy
那采用 https 后,到底会多用多少服务器资源,2010年1月 Gmail切换到完全使用 https, 前端处理 SSL 机器的CPU 负荷增加不超过1%,每个连接的内存消耗少于20KB,网络流量增加少于2%。由于 Gmail 应该是使用N台服务器分布式处理,所以CPU 负荷的数据并不具有太多的参考意义,每个连接内存消耗和网络流量数据有参考意义。这篇文章中还列出了单核每秒大概处理1500次握手(针对1024-bit 的 RSA),这个数据很有参考意义,具体信息来源的英文网址:ImperialViolet。
可能看了上面的描述,有些概念过于专业,所以想讲一个故事让大家比较好理解:
从前山上有座庙,庙里有个和尚......,别胡闹了,老和尚来了。
小和尚问老和尚:ssl为什么会让http安全?
老和尚答道:譬如你我都有一个同样的密码,我发信给你时用这个密码加密,你收到我发的信,用这个密码解密,就能知道我信的内容,其他的闲杂人等,就算偷偷拿到了信,由于不知道这个密码,也只能望信兴叹,这个密码就叫做对称密码。ssl使用对称密码对http内容进行加解密,所以让http安全了,常用的加解密算法主要有3DES和AES等。
小和尚摸摸脑袋问老和尚:师傅,如果我们两人选择“和尚”作为密码,再创造一个和尚算法,我们俩之间的通信不就高枕无忧了?
老和尚当头给了小和尚一戒尺:那我要给山下的小花写情书,还得用“和尚”这个密码不成?想了想又给了小和尚一戒尺:虽然我们是和尚,不是码农,也不能自己造轮子,当初一堆牛人码农造出了Wifi的安全算法WEP,后来发现是一绣花枕头,在安全界传为笑谈;况且小花只知道3DES和AES,哪知道和尚算法?
小和尚问到:那师傅何解?
老和尚:我和小花只要知道每封信的密码,就可以读到对方加密的信件,关键是我们互相之间怎么知道这个对称密码。你说,我要是将密码写封信给她,信被别人偷了,那大家不都知道我们的密码了,也就能够读懂我们情书了。不过还是有解的,这里我用到了江湖中秘传的非对称密码。我现在手头有两个密码,一个叫“公钥”,一个叫“私钥”,公钥发布到了江湖上,好多人都知道,私钥嘛,江湖上只有我一个人知道;这两个密钥有数学相关性,就是说用公钥加密的信件,可以用私钥解开,但是用公钥却解不开。公钥小花是知道的,她每次给我写信,都要我的公钥加密她的对称密码,单独写一张密码纸,然后用她的对称密码加密她的信件,这样我用我的私钥可以解出这个对称密码,再用这个对称密码来解密她的信件。
老和尚顿了顿:可惜她用的对称密码老是“和尚为什么写情书”这一类,所以我每次解开密码纸时总是怅然若失,其实我钟意的对称密码是诸如“风花”“雪月”什么的,最头痛的是,我还不得不用“和尚为什么写情书”这个密码来加密我给小花回的情书,人世间最痛苦的事莫过于如此。可有一次出意外了,山下的张屠夫给了小花他自己的公钥,谎称的我公钥刚刚更新了,小花后面给我的信的密码都用这个加密,然后张屠夫用他自己的私钥解开小花的对称密码后,不仅看到了小花的信件,还用这个密码给小花发了很多下流的信,同时也用这个密码伪造了一封小花给我的绝交信,直到三个月之后才真相大白。有此教训后,我重新发布到江湖的公钥,上面都有嵩山少林寺的火印,没有火印的公钥,大家不再相信是我的,可是从此之后,我在江湖已经没有名声,也好久没有收到过情书。
小和尚问:那然后呢?
老和尚:过了一年才知道,其实小花还是给我写过信的,当时信确实是用有火印的公钥加密,张屠夫偷到信后,由于不知道我的私钥,解不开小花的密码信,所以一怒之下将信件全部烧毁了。也由于张屠夫无法知道小花的对称密码而无法回信,小花发出几封信后石沉大海,也心生疑惑,到处打听我的近况。这下张屠夫急了,他使用我发布的公钥,仿照小花的语气,给我发来一封信。拿到信时我就觉得奇怪,信纸上怎么有一股猪油的味道,结尾竟然还关切的询问我的私钥。情知有诈,我思量无论如何要找到办法让我知道来的信是否真是小花所写。后来竟然让我想到了办法....
老和尚摸着光头说:这头发可不是白掉的,我托香客给小花带话,我一切安好,希望她也拥有属于自己的一段幸福,不对,是一对非对称密钥。小花委托小镇美女协会给小花公钥打上火印后,托香客给我送来,这样小花在每次给我写信时,都会在密码纸上贴上一朵小牡丹,牡丹上写上用她自己的私钥加密过的给我的留言,这样我收到自称是小花的信后,我会先抽出密码纸,取下小牡丹,使用小花的公钥解密这段留言,如果解不出来,我会直接将整封信连同密码纸一起扔掉,因为这封信一定不是小花写的,如果能够解出来,这封信才能确信来之于小花,我才仔细的解码阅读。
小和尚:难怪听说张屠夫是被活活气死的。您这情书整的,我头都大了,我长大后,有想法直接扯着嗓子对山下喊,也省的这么些麻烦。不过我倒是明白了楼上的话,ssl 握手阶段,就是要解决什么看火印,读牡丹,解密码纸,确实够麻烦的,所以性能瓶颈在这里,一旦双方都知道了对称密码,之后就是行云流水的解码读信阶段了,相对轻松很多。
来自膘哥的博客:http://www.neatstudio.com/show-2534-1.shtml
pagefile.sys
分頁檔案 pagefile.sys 是系統虛擬記憶體應用時轉移記憶體的系統文件, 不可或缺! 沒有分頁檔案某些軟體會因記憶體不足或虛擬記憶體不能轉移而出現系統錯誤; 要善用保固 SSD 壽命的話, pagefile.sys 的頻繁讀寫作業是應該要盡量避免, 如果將 SSD 當系統碟的話, 可以安裝褂載 RAMDISK(例如 Superspeed RAMDISK)或利用已有的 HDD 硬碟來存放 pagefile.sys。
完全可以删掉而不影响大家使用.还会大大节省C盘空间的占用。
操作:
以管理员运行CMD, 打以下命令:
POWERCFG -H OFF
即自动删除该文件. 大家看处理前后C盘空间的变化就知道了.
怎么以管理员运行:
在“所有程序”->“附件”->“命令提示符”上右键,选“以管理员运行”
如果本身是以管理员身份登录,直接运行cmd即可。
——————————————————————————————————————————————————————————
有两种方法,一种是删除pagefile.sys文件,一种是转移pagefile.sys文件到其它盘符.
(1)删除pagefile.sys文件。
网上有很多种方法,比如引导系统进入DOS状态下删除、在用安装盘进入控制台删除、在多系统中用其它系统删除等等,非常麻烦,而且重启系统后,这个文件又会回来。其实有一个删除的方法很简单,而且重启后也不会再产生这个文件:以XP系统为例,“开始”--“控制面版”--“系统”--“高级”--“性能-设置”--“高级”--“虚拟内存-更改”--选中要删除页面文件的盘符(一般是C盘)--选中“无分页文件”--“设置”--“确定”。关闭窗口后,系统会提示重启,重启后pagefile.sys文件就被删除了。
(2)转移pagefile.sys文件。
方法同上,进入“虚拟内存-更改”窗口后,--选中D盘或其它你想选的盘--选中“自定义大小”--输入一个初始值和最大值(初始值一般是实际内存的1.5倍,最大内存为初始值的2倍左右。也可选中“系统管理的大小”,若选此项则无须输入数值)--“设置”--“确定”--重启。这样的你的虚拟内存就被放到其它盘了。
优化方法
虚拟内存的大小是由Windows来控制的,但这种默认的Windows设置并不是最佳的方案,因此我们要对其进行一些调整。这样才能发挥出系统的最佳性能。
1、改变页面文件的位置
其目的主要是为了保持虚拟内存的连续性。因为硬盘读取数据是靠磁头在磁性物质上读取,页面文件放在磁盘上的不同区域,磁头就要跳来跳去,自然不利于提高效率。而且系统盘文件众多,虚拟内存肯定不连续,因此要将其放到其他盘上。改变页面文件位置的方法是:用鼠标右键点击“我的电脑”,选择“属性→高级→性能设置→高级→更改虚拟内存”,在驱动器栏里选择想要改变到的位置(如图1)即可。值得注意的是,当移动好页面文件后,可以通过将原来所在盘设置为“无分页文件”来删除原来的分页文件(需要重启生效)。
2、改变页面文件的大小
改变了页面文件的位置后,我们还可以对它的大小进行一些调整(如图2)。调整时我们需要注意,不要将最大、最小页面文件设为等值。因为通常内存不会真正“塞满”,它会在内存储量到达一定程度时,自动将一部分暂时不用的数据放到硬盘中。最小页面文件越大,所占比例就低,执行的速度也就越慢。最大页面文件是极限值,有时打开很多程序,内存和最小页面文件都已“塞满”,就会自动溢出到最大页面文件。所以将两者设为等值是不合理的。一般情况下,最小页面文件设得小些,这样能在内存中尽可能存储更多数据,效率就越高。最大页面文件设得大些,以免出现“满员”的情况。
3、禁用页面文件
当拥有了512MB以上的内存时,页面文件的作用将不再明显,因此我们可以将其禁用。方法是:依次进入注册表编辑器“HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/SessionManager/MemoryManagement”下,在“DisablePa-ging Executive”(禁用页面文件)选项中将其值设为“1”即可
4、清空页面文件
在同一位置上有一个“ClearPageFileAtShutdown(关机时清除页面文件)”,将该值设为“1”(如图4)。这里所说的“清除”页面文件并非是指从硬盘上完全删除pagefile.sys文件,而是对其进行“清洗”和整理,从而为下次启动Windows XP时更好地利用虚拟内存做好准备。
虚拟内存的概念及优化方法。使我们了解了它在内存与硬盘之间的工作关系,同时认识到了虚拟内存并非越大越好,而应该根据计算机的具体配置进行合理的调整。相信大家在真正的了解并掌握了虚拟内存的作用与优化方法后,一定会使爱机在性能上有所提升。
来自:http://articles.e-works.net.cn/661/Article41549.htm
http://www.loveooo.com/favorite/124.html
http://moonwulk.blogspot.com/2010/07/windows-7-ssd.html
分頁檔案 pagefile.sys 是系統虛擬記憶體應用時轉移記憶體的系統文件, 不可或缺! 沒有分頁檔案某些軟體會因記憶體不足或虛擬記憶體不能轉移而出現系統錯誤; 要善用保固 SSD 壽命的話, pagefile.sys 的頻繁讀寫作業是應該要盡量避免, 如果將 SSD 當系統碟的話, 可以安裝褂載 RAMDISK(例如 Superspeed RAMDISK)或利用已有的 HDD 硬碟來存放 pagefile.sys。
完全可以删掉而不影响大家使用.还会大大节省C盘空间的占用。
操作:
以管理员运行CMD, 打以下命令:
POWERCFG -H OFF
即自动删除该文件. 大家看处理前后C盘空间的变化就知道了.
怎么以管理员运行:
在“所有程序”->“附件”->“命令提示符”上右键,选“以管理员运行”
如果本身是以管理员身份登录,直接运行cmd即可。
——————————————————————————————————————————————————————————
有两种方法,一种是删除pagefile.sys文件,一种是转移pagefile.sys文件到其它盘符.
(1)删除pagefile.sys文件。
网上有很多种方法,比如引导系统进入DOS状态下删除、在用安装盘进入控制台删除、在多系统中用其它系统删除等等,非常麻烦,而且重启系统后,这个文件又会回来。其实有一个删除的方法很简单,而且重启后也不会再产生这个文件:以XP系统为例,“开始”--“控制面版”--“系统”--“高级”--“性能-设置”--“高级”--“虚拟内存-更改”--选中要删除页面文件的盘符(一般是C盘)--选中“无分页文件”--“设置”--“确定”。关闭窗口后,系统会提示重启,重启后pagefile.sys文件就被删除了。
(2)转移pagefile.sys文件。
方法同上,进入“虚拟内存-更改”窗口后,--选中D盘或其它你想选的盘--选中“自定义大小”--输入一个初始值和最大值(初始值一般是实际内存的1.5倍,最大内存为初始值的2倍左右。也可选中“系统管理的大小”,若选此项则无须输入数值)--“设置”--“确定”--重启。这样的你的虚拟内存就被放到其它盘了。
优化方法
虚拟内存的大小是由Windows来控制的,但这种默认的Windows设置并不是最佳的方案,因此我们要对其进行一些调整。这样才能发挥出系统的最佳性能。
1、改变页面文件的位置
其目的主要是为了保持虚拟内存的连续性。因为硬盘读取数据是靠磁头在磁性物质上读取,页面文件放在磁盘上的不同区域,磁头就要跳来跳去,自然不利于提高效率。而且系统盘文件众多,虚拟内存肯定不连续,因此要将其放到其他盘上。改变页面文件位置的方法是:用鼠标右键点击“我的电脑”,选择“属性→高级→性能设置→高级→更改虚拟内存”,在驱动器栏里选择想要改变到的位置(如图1)即可。值得注意的是,当移动好页面文件后,可以通过将原来所在盘设置为“无分页文件”来删除原来的分页文件(需要重启生效)。
2、改变页面文件的大小
改变了页面文件的位置后,我们还可以对它的大小进行一些调整(如图2)。调整时我们需要注意,不要将最大、最小页面文件设为等值。因为通常内存不会真正“塞满”,它会在内存储量到达一定程度时,自动将一部分暂时不用的数据放到硬盘中。最小页面文件越大,所占比例就低,执行的速度也就越慢。最大页面文件是极限值,有时打开很多程序,内存和最小页面文件都已“塞满”,就会自动溢出到最大页面文件。所以将两者设为等值是不合理的。一般情况下,最小页面文件设得小些,这样能在内存中尽可能存储更多数据,效率就越高。最大页面文件设得大些,以免出现“满员”的情况。
3、禁用页面文件
当拥有了512MB以上的内存时,页面文件的作用将不再明显,因此我们可以将其禁用。方法是:依次进入注册表编辑器“HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/SessionManager/MemoryManagement”下,在“DisablePa-ging Executive”(禁用页面文件)选项中将其值设为“1”即可
4、清空页面文件
在同一位置上有一个“ClearPageFileAtShutdown(关机时清除页面文件)”,将该值设为“1”(如图4)。这里所说的“清除”页面文件并非是指从硬盘上完全删除pagefile.sys文件,而是对其进行“清洗”和整理,从而为下次启动Windows XP时更好地利用虚拟内存做好准备。
虚拟内存的概念及优化方法。使我们了解了它在内存与硬盘之间的工作关系,同时认识到了虚拟内存并非越大越好,而应该根据计算机的具体配置进行合理的调整。相信大家在真正的了解并掌握了虚拟内存的作用与优化方法后,一定会使爱机在性能上有所提升。
来自:http://articles.e-works.net.cn/661/Article41549.htm
http://www.loveooo.com/favorite/124.html
http://moonwulk.blogspot.com/2010/07/windows-7-ssd.html
我在Win7的基础上,想尝试引导CentOS系统,可是引导失败,连Win7系统也启动不了了。我使用的第一种方法是通过Win7光盘本身的修复功能,没有成功,因此我使用了第二种方法。
在光盘启动到安装系统界面前,使用shift+F10进入cmd。敲入下面的命令:
bootrec /RebuildBcd
bootrec /fixmbr
bootrec /fixboot
通过上面的三行命令,我成功进入到了Win7系统。
来自:http://www.cnblogs.com/congxin/archive/2013/03/11/2954726.html
实践可行:
win7系统下,如何去掉多余的开机系统选项:
http://wenku.baidu.com/link?url=rFeRtQ1P6QIgpWZRODHhNLDhjf4Wb8_1QpRwIOWXDVOwGTtR-YLegFaCuOkyBUupli135R8p2d3bACvMQXjB_1YrCvRhM8-BshM4QfVZQMe
在光盘启动到安装系统界面前,使用shift+F10进入cmd。敲入下面的命令:
bootrec /RebuildBcd
bootrec /fixmbr
bootrec /fixboot
通过上面的三行命令,我成功进入到了Win7系统。
来自:http://www.cnblogs.com/congxin/archive/2013/03/11/2954726.html
实践可行:
win7系统下,如何去掉多余的开机系统选项:
http://wenku.baidu.com/link?url=rFeRtQ1P6QIgpWZRODHhNLDhjf4Wb8_1QpRwIOWXDVOwGTtR-YLegFaCuOkyBUupli135R8p2d3bACvMQXjB_1YrCvRhM8-BshM4QfVZQMe
对于热衷DIY的用户而言,Raspberry Pi开发板显然已经成为最热门的开发设备了,只要用户想得到的工程,Raspberry Pi几乎都能帮你实现。网络销售平台Element 14今天宣布为Raspberry Pi推出一款全新的配件:Wolfson(欧胜微电子)音频卡。这款音频卡专为采用P5接口(P5 pads)的Raspberry Pi设计,P5接口仅在Revision 2及更新版本的Raspberry Pi中出现。所以如果你购买的是较早版本的Raspberry Pi的话,恐怕需要先行升级了。
Wolfson音频卡基于来自智能手机、平板和其他移动设备的WM5102低功耗音频系统,具备了高性能的电话语音处理性能和高性能的音频CODEC,其中还包含了可编程的DSP(数字信号处理器)。这款声卡的其他特性方面还包括双立体声耳机驱动,立体声2W D级扬声器输出等。Wolfson音频卡的售价为33美元(约合人民币203元)。
来自:http://www.cnbeta.com/articles/275841.htm
Wolfson音频卡基于来自智能手机、平板和其他移动设备的WM5102低功耗音频系统,具备了高性能的电话语音处理性能和高性能的音频CODEC,其中还包含了可编程的DSP(数字信号处理器)。这款声卡的其他特性方面还包括双立体声耳机驱动,立体声2W D级扬声器输出等。Wolfson音频卡的售价为33美元(约合人民币203元)。
来自:http://www.cnbeta.com/articles/275841.htm
[实践OK]MemcacheQ 消息队列的安装,PHP结合memcacheq消息队列解决并发问题,在shell上连接、增、删、查运行的MQ队列服务。
Cache与Store jackxiang 2014-3-10 16:44
背景:关于队列,Linux底层已有数据结构支持,也有Erlang写的rabbitQ,这个MemcacheQ和张宴兄弟的httpsqs一样的基于libevent的http接口加上BerkeleyDB(现在好你没更新了吧?),应该还是相当稳定的,有时间安个试试。
安装实践的过程如下,Libevent已经在我的虚拟机里安过了,不再描述,安装来源:http://blog.sina.com.cn/s/blog_a0db295e01015eqt.html
开始安装:
(1)berkeley-db:
http://download.oracle.com/otn/berkeley-db/db-5.3.15.tar.gz
~/software/db-5.3.15/build_unix# ../dist/configure --prefix=/usr/local/webserver/berkeleyDB && make && make install
(2)memcacheq:
http://code.google.com/p/memcacheq/downloads/list
~/software/memcacheq-0.2.0# ./configure --prefix=/usr/local/webserver/memcacheq --enable-threads --with-libevent --with-bdb=/usr/local/webserver/berkelyDB
#-j 8
make -j 8
make install
注意:在没有安装BerkeleyDB的情况下,会提示( configure: error: cannot find libdb.so in /usr/local/BerkeleyDB.5.3/lib);
It is normal verbose message. If you dont want to keep it, you can start without '-v'.
make && make install
测试是否安装成功:
/usr/local/webserver/memcacheq/bin/memcacheq -h
如果报错:
memcacheq: error while loading shared libraries: libdb-5.3.so: cannot open shared object file: No such file or directory
解决方法:
ln -s /usr/local/webserver/BerkeleyDB.5.3/lib/libdb-5.3.so /usr/lib/libdb-5.3.so
ldconfig
之前可先根据实际安装路径配置链接库:
可以修改/etc/ld.so.conf,增加BDB和libevent的库路径(建议)
/usr/local/BerkeleyDB.5.0/lib
/usr/local/lib
也可以临时export LD_LIBRARY_PATH=/usr/local/BerkeleyDB.5.0/lib/:/usr/local/lib:$LD_LIBRARY_PATH
(3)启动服务:
/usr/local/webserver/memcacheq/bin/memcacheq -d -r -uroot -p11212 -H /data0/memcacheq/data -N -R -v -L 1024 -B 1024 /data/logs/mq_error.log 2>&1
(/data0/memcacheq/data 必须自己创建)
mkdir -p /data0/memcacheq/data
chmod -R 777 /data0/memcacheq/data
(4)检查是否启动成功:
ps -aux |grep memcacheq
(5)增加到开机启动:
编辑 /etc/rc.local
增加以下内容:
/usr/local/webserver/memcacheq/bin/memcacheq -d -r -uroot -p11212 -H /var/memcacheq/data -N -R -v -L 1024 -B 1024 /data/logs/mq_error.log 2>&1
(6)参数不对容易出现"qstats dump thread: a qstats is dump.",请加上参数v:
(It is normal verbose message. If you dont want to keep it, you can start without '-v'.)
nohup /usr/local/memcacheq/bin/memcacheq -d -u www -p61611 -r -H /usr/local/memcacheq/data -N -v -L 1024 -B 1023 > /usr/local/memcacheq/logs/mq_error.log 2>&1
MemcacheQ使用以及与PHP连接 实验之shell下telnet操作该queque:
实践来源,MemcacheQ使用以及与PHP连接:(里面有shell操作队列的方法,很适用!)
http://ifxoxo.com/use-memcacheq.html
开始实践:
1)set 增加一个信息到队列的尾部
telnet 127.0.0.1 11212
set <queue name> <flags> 0 <message_len>
<put your message body here>
STORED
#示例
#插入第一条数据
set test_queue 0 0 13
first_message
STORED
#插入第二条数据
set test_queue 0 0 8
message2
STORED
实践如下:
注:信息不能大于message_len。大于message_len会报错.message_len以字节为单位。
#超出长度时示例
set test_queue 0 0 2
tes
CLIENT_ERROR bad data chunk
ERROR
#你超出message_len范围后会报错,错误的数据集。
2)查看队列:stats queue
3)get 从队列的头部查询一条信息并销毁:
get <queue name>
VALUE <queue name> <flags> <message_len>
<your message body will come here>
END
#示例:
get test_queue
VALUE test_queue 0 13
first_message
END
#可以看出是查询的第一个插入的信息。
4)delete 删除队列:
delete <queue name>
#示例:
delete test_queue
DELETED
#此时再查看队列状态:
stats queue
END
#已经删除了。
———————与php 连接———————
注意:和php连接,需要事先安装memcache的php扩展,如未安装,可以点击: linux下安装PHP扩展:Memcache
linux下安装PHP扩展:Memcache的文章来源:http://ifxoxo.com/memcache-install.html 其实就是安装memcache的扩展,如果网站以前有连接memcache,现在就不用安了。
PHP示例:
root@192.168.0.6:/data0/htdocs/blog# php testmemcacheq.php
注释:memcache_get($memcache_obj, 'demoqueue1');并执行后:
root@192.168.0.6:/data0/htdocs/blog# telnet 127.0.0.1 11212
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get demoqueue1
VALUE demoqueue1 0 17
反过来,设置shell后,用php扩展去获取(注意用shell操作时最后的数字长度最好大于写的字符长度,否则报错:CLIENT_ERROR bad data chunk。):
PHP代码获取如下:
root@192.168.0.6:/data0/htdocs/blog# php testmemcacheq.php
te
________________摘自其他项目团队的php代码_______________
_____________________________________________________
罗列安装使用的Url如下:
http://blog.sina.com.cn/s/blog_a0db295e01015eqt.html
http://ifxoxo.com/use-memcacheq.html
来自:http://www.com133.com/56
HttpSQS:
http://blog.s135.com/httpsqs/
PHP下的使用方法:http://memcachedb.org/memcacheq/
sina微博队列memcacheq 服务安装与原理:
http://blog.163.com/song_0803/blog/static/46097597201131510533947/
安装实践的过程如下,Libevent已经在我的虚拟机里安过了,不再描述,安装来源:http://blog.sina.com.cn/s/blog_a0db295e01015eqt.html
开始安装:
(1)berkeley-db:
http://download.oracle.com/otn/berkeley-db/db-5.3.15.tar.gz
~/software/db-5.3.15/build_unix# ../dist/configure --prefix=/usr/local/webserver/berkeleyDB && make && make install
(2)memcacheq:
http://code.google.com/p/memcacheq/downloads/list
~/software/memcacheq-0.2.0# ./configure --prefix=/usr/local/webserver/memcacheq --enable-threads --with-libevent --with-bdb=/usr/local/webserver/berkelyDB
#-j 8
make -j 8
make install
注意:在没有安装BerkeleyDB的情况下,会提示( configure: error: cannot find libdb.so in /usr/local/BerkeleyDB.5.3/lib);
It is normal verbose message. If you dont want to keep it, you can start without '-v'.
make && make install
测试是否安装成功:
/usr/local/webserver/memcacheq/bin/memcacheq -h
如果报错:
memcacheq: error while loading shared libraries: libdb-5.3.so: cannot open shared object file: No such file or directory
解决方法:
ln -s /usr/local/webserver/BerkeleyDB.5.3/lib/libdb-5.3.so /usr/lib/libdb-5.3.so
ldconfig
之前可先根据实际安装路径配置链接库:
可以修改/etc/ld.so.conf,增加BDB和libevent的库路径(建议)
/usr/local/BerkeleyDB.5.0/lib
/usr/local/lib
也可以临时export LD_LIBRARY_PATH=/usr/local/BerkeleyDB.5.0/lib/:/usr/local/lib:$LD_LIBRARY_PATH
(3)启动服务:
/usr/local/webserver/memcacheq/bin/memcacheq -d -r -uroot -p11212 -H /data0/memcacheq/data -N -R -v -L 1024 -B 1024 /data/logs/mq_error.log 2>&1
(/data0/memcacheq/data 必须自己创建)
mkdir -p /data0/memcacheq/data
chmod -R 777 /data0/memcacheq/data
(4)检查是否启动成功:
ps -aux |grep memcacheq
(5)增加到开机启动:
编辑 /etc/rc.local
增加以下内容:
/usr/local/webserver/memcacheq/bin/memcacheq -d -r -uroot -p11212 -H /var/memcacheq/data -N -R -v -L 1024 -B 1024 /data/logs/mq_error.log 2>&1
(6)参数不对容易出现"qstats dump thread: a qstats is dump.",请加上参数v:
(It is normal verbose message. If you dont want to keep it, you can start without '-v'.)
nohup /usr/local/memcacheq/bin/memcacheq -d -u www -p61611 -r -H /usr/local/memcacheq/data -N -v -L 1024 -B 1023 > /usr/local/memcacheq/logs/mq_error.log 2>&1
MemcacheQ使用以及与PHP连接 实验之shell下telnet操作该queque:
实践来源,MemcacheQ使用以及与PHP连接:(里面有shell操作队列的方法,很适用!)
http://ifxoxo.com/use-memcacheq.html
开始实践:
1)set 增加一个信息到队列的尾部
telnet 127.0.0.1 11212
set <queue name> <flags> 0 <message_len>
<put your message body here>
STORED
#示例
#插入第一条数据
set test_queue 0 0 13
first_message
STORED
#插入第二条数据
set test_queue 0 0 8
message2
STORED
实践如下:
注:信息不能大于message_len。大于message_len会报错.message_len以字节为单位。
#超出长度时示例
set test_queue 0 0 2
tes
CLIENT_ERROR bad data chunk
ERROR
#你超出message_len范围后会报错,错误的数据集。
2)查看队列:stats queue
3)get 从队列的头部查询一条信息并销毁:
get <queue name>
VALUE <queue name> <flags> <message_len>
<your message body will come here>
END
#示例:
get test_queue
VALUE test_queue 0 13
first_message
END
#可以看出是查询的第一个插入的信息。
4)delete 删除队列:
delete <queue name>
#示例:
delete test_queue
DELETED
#此时再查看队列状态:
stats queue
END
#已经删除了。
———————与php 连接———————
注意:和php连接,需要事先安装memcache的php扩展,如未安装,可以点击: linux下安装PHP扩展:Memcache
linux下安装PHP扩展:Memcache的文章来源:http://ifxoxo.com/memcache-install.html 其实就是安装memcache的扩展,如果网站以前有连接memcache,现在就不用安了。
PHP示例:
root@192.168.0.6:/data0/htdocs/blog# php testmemcacheq.php
注释:memcache_get($memcache_obj, 'demoqueue1');并执行后:
root@192.168.0.6:/data0/htdocs/blog# telnet 127.0.0.1 11212
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get demoqueue1
VALUE demoqueue1 0 17
反过来,设置shell后,用php扩展去获取(注意用shell操作时最后的数字长度最好大于写的字符长度,否则报错:CLIENT_ERROR bad data chunk。):
PHP代码获取如下:
root@192.168.0.6:/data0/htdocs/blog# php testmemcacheq.php
te
________________摘自其他项目团队的php代码_______________
_____________________________________________________
罗列安装使用的Url如下:
http://blog.sina.com.cn/s/blog_a0db295e01015eqt.html
http://ifxoxo.com/use-memcacheq.html
来自:http://www.com133.com/56
HttpSQS:
http://blog.s135.com/httpsqs/
PHP下的使用方法:http://memcachedb.org/memcacheq/
sina微博队列memcacheq 服务安装与原理:
http://blog.163.com/song_0803/blog/static/46097597201131510533947/