使用Phar来打包发布PHP程序
Php/Js/Shell/Go jackxiang 2014-9-29 14:21
背景:PHP学Java的jar文件一样可以打包,有点意思。
——
简单来说,Phar就是把Java界的jar概念移植到了PHP界。
Phar可以将一组PHP文件进行打包,还可以创建默认执行的stub(或者叫做 bootstrap loader),Phar可以选择是否进行压缩,可选gzip和bzip2格式。
下面举例说明如何创建和使用Phar:
假设我们的项目名称是user,包含三个文件:
user/user.class.php
user/user.func.php
user/test.php
然后我们使用如下PHP程序创建Phar文件:
make_phar.php
执行 php make_phar.php后,可以在当前目录发现一个叫做user.phar的文件。
我们可以直接执行user.phar文件:
php user.phar,这个相当于执行user/test.php
我们还可以引用此文件:
test_phar.php
摘自:
http://xmgu2008.blog.163.com/blog/static/1391223802014225101912694/
参考资料:
https://php.net/manual/en/book.phar.php
——
简单来说,Phar就是把Java界的jar概念移植到了PHP界。
Phar可以将一组PHP文件进行打包,还可以创建默认执行的stub(或者叫做 bootstrap loader),Phar可以选择是否进行压缩,可选gzip和bzip2格式。
下面举例说明如何创建和使用Phar:
假设我们的项目名称是user,包含三个文件:
user/user.class.php
user/user.func.php
user/test.php
然后我们使用如下PHP程序创建Phar文件:
make_phar.php
执行 php make_phar.php后,可以在当前目录发现一个叫做user.phar的文件。
我们可以直接执行user.phar文件:
php user.phar,这个相当于执行user/test.php
我们还可以引用此文件:
test_phar.php
摘自:
http://xmgu2008.blog.163.com/blog/static/1391223802014225101912694/
参考资料:
https://php.net/manual/en/book.phar.php
Linux rsync同步由手动到自动--如何杀死rsync的同步进程d。
Unix/LinuxC技术 jackxiang 2014-9-29 10:18
背景:对于大公司的同步,可能会采用zoomkeeper作肿裁加agent下发shell命令实现,而对于小公司,大都采用linux下有一个叫rsync这样的加上notice作同步。
如何杀死rsync的同步进程d:
阅读全文
如何杀死rsync的同步进程d:
阅读全文
Bash 远程任意代码执行安全漏洞(最严重漏洞)
Unix/LinuxC技术 jackxiang 2014-9-27 18:34
背景:群里说到,没有注意,自己升级了下自己的vps服务器,后来公司要求也升级下线上服务器,才知事情严重,为过好国庆升级是必要 的,听说苹果系统说自己系统尽管也用这个bash,如果没有设置高级什么的,不存在此漏洞。
Bash 远程任意代码执行安全漏洞(最严重漏洞)
US-CERT 意识到 Bash 存在一个安全的漏洞,该漏洞直接影响基于 Unix 的系统(如 Linux、OS X 等)。该漏洞将导致远程攻击者在受影响的系统上执行任意代码。
US-CERT 建议用户和管理员重新检查这篇红帽的安全博客。更多的详情只能参考相应 Linux 发行商以获取相应补丁。
你可以使用如下命令来检查系统存在此漏洞:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
受影响的系统包括:
CentOS
Debian
Redhat
Ubuntu
红帽系可通过更新 bash 并重启系统来解决这个问题:
# yum update bash
或者:
# yum update bash-4.1.2-15.el6_5.1
此举只是更新了 bash 包,还需要重启系统才能生效。
Ubuntu 用户可以通过如下命令打补丁,无需重启:
apt-get update
apt-get install bash
______________________________
[root@jackxiang ~]# rpm -qa|grep bash
bash-4.1.2-15.el6_5.1.x86_64
Bash 远程任意代码执行安全漏洞(最严重漏洞)
US-CERT 意识到 Bash 存在一个安全的漏洞,该漏洞直接影响基于 Unix 的系统(如 Linux、OS X 等)。该漏洞将导致远程攻击者在受影响的系统上执行任意代码。
US-CERT 建议用户和管理员重新检查这篇红帽的安全博客。更多的详情只能参考相应 Linux 发行商以获取相应补丁。
你可以使用如下命令来检查系统存在此漏洞:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
受影响的系统包括:
CentOS
Debian
Redhat
Ubuntu
红帽系可通过更新 bash 并重启系统来解决这个问题:
# yum update bash
或者:
# yum update bash-4.1.2-15.el6_5.1
此举只是更新了 bash 包,还需要重启系统才能生效。
Ubuntu 用户可以通过如下命令打补丁,无需重启:
apt-get update
apt-get install bash
______________________________
[root@jackxiang ~]# rpm -qa|grep bash
bash-4.1.2-15.el6_5.1.x86_64
背景:php-fpm一般来说是够用,难免不够用,一是怎么样看,二是怎么样判断是否真够用,博主用了一个命令:netstat -anpo | grep "php-cgi" | wc -l 去和自己配置php-fpm.conf作对比,再者是对nginx出现各种错误都出现502揽在自己身上了,于其说nginx是为了安全,还不如说是也给排查问题增加了难度,再就是超时等,nginx有nginx的超时,php有php配置的超时,双方都是一个相互关联的问题,这些都是对于lnmp架构里经常遇到的问题。
统计Nginx日志里有502的行数有一个大体的了解,如下:
cat a.txt
183.60.235.59 - - [31/Jan/2015:00:00:06 +0800] "GET /forum/0/index.html HTTP/1.1" 302
183.60.235.59 - - [31/Jan/2015:00:00:06 +0800] "GET /forum/0/index.html HTTP/1.1" 302
183.60.235.59 - - [31/Jan/2015:00:00:06 +0800] "GET /forum/0/index.html HTTP/1.1" 502
183.60.235.59 - - [31/Jan/2015:00:00:06 +0800] "GET /forum/0/index.html HTTP/1.1" 302
183.60.235.59 - - [31/Jan/2015:00:00:06 +0800] "GET /forum/0/index.html HTTP/1.1" 302
183.60.235.59 - - [31/Jan/2015:00:00:06 +0800] "GET /forum/0/index.html HTTP/1.1" 302
cat a.txt |awk '{print "line:"NR " status:"$9}'|grep 502
line:3 status:502
——————————————————————————————————————————————
Nginx 502的触发条件
502错误最通常的出现情况就是后端主机当机。在upstream配置里有这么一项配置:proxy_next_upstream,这个配置指定了 nginx在从一个后端主机取数据遇到何种错误时会转到下一个后端主机,里头写上的就是会出现502的所有情况拉,默认是error timeout。error就是当机、断线之类的,timeout就是读取堵塞超时,比较容易理解。我一般是全写上的:
proxy_next_upstream error timeout invalid_header http_500 http_503; 不过现在可能我要去掉http_500这一项了,http_500指定后端返回500错误时会转一个主机,后端的jsp出错的话,本来会打印一堆 stacktrace的错误信息,现在被502取代了。但公司的程序员可不这么认为,他们认定是nginx出现了错误,我实在没空跟他们解释502的原理 了……
阅读全文
统计Nginx日志里有502的行数有一个大体的了解,如下:
cat a.txt
183.60.235.59 - - [31/Jan/2015:00:00:06 +0800] "GET /forum/0/index.html HTTP/1.1" 302
183.60.235.59 - - [31/Jan/2015:00:00:06 +0800] "GET /forum/0/index.html HTTP/1.1" 302
183.60.235.59 - - [31/Jan/2015:00:00:06 +0800] "GET /forum/0/index.html HTTP/1.1" 502
183.60.235.59 - - [31/Jan/2015:00:00:06 +0800] "GET /forum/0/index.html HTTP/1.1" 302
183.60.235.59 - - [31/Jan/2015:00:00:06 +0800] "GET /forum/0/index.html HTTP/1.1" 302
183.60.235.59 - - [31/Jan/2015:00:00:06 +0800] "GET /forum/0/index.html HTTP/1.1" 302
cat a.txt |awk '{print "line:"NR " status:"$9}'|grep 502
line:3 status:502
——————————————————————————————————————————————
Nginx 502的触发条件
502错误最通常的出现情况就是后端主机当机。在upstream配置里有这么一项配置:proxy_next_upstream,这个配置指定了 nginx在从一个后端主机取数据遇到何种错误时会转到下一个后端主机,里头写上的就是会出现502的所有情况拉,默认是error timeout。error就是当机、断线之类的,timeout就是读取堵塞超时,比较容易理解。我一般是全写上的:
proxy_next_upstream error timeout invalid_header http_500 http_503; 不过现在可能我要去掉http_500这一项了,http_500指定后端返回500错误时会转一个主机,后端的jsp出错的话,本来会打印一堆 stacktrace的错误信息,现在被502取代了。但公司的程序员可不这么认为,他们认定是nginx出现了错误,我实在没空跟他们解释502的原理 了……
阅读全文
背景:马云不会写代码,也就是说淘宝网站的建设过程,他没有写过一行。那么他凭什么拥有淘宝?而不是那些参与编码的程序员拥有淘宝呢?
答案很有意思:
——————————————————————————————————————————————————————
答案一:阅读全文
答案很有意思:
——————————————————————————————————————————————————————
答案一:阅读全文
背景:当用popen打开多个command时会出现重用变量,二是会用连字符进行连接command返回的变量,两次popen会有两个地方出现问题。
$handle = popen($command, "r");
do {
$excuteResult = fread($handle, 2024);
if (strlen($excuteResult) == 0) {
pclose($handle); //关闭pipe
break;
}
$excuteResultAll .= $excuteResult;
} while (true);
//这儿用到的$excuteResultAll 变量,下面还要用,防止污染,则需要给NULL值清空,用unset后需要再定义一次相同的变量,否则会出现:
Undefined variable: excuteResultAll in /data/htdocs/jackxiang.com/index.php on line 354
do {
$excuteResult = fread($handle, 2024);
if (strlen($excuteResult) == 0) {
pclose($handle); //关闭pipe
break;
}
$excuteResultAll .= $excuteResult;
} while (true);
______________________________小demon实践如下:______________________________
php null.php
<?php
$foo = "";
$foo = "jack";
unset($foo);
$foo .= "xiang";
$vars = get_defined_vars();
通过unset后,$foo变量用点连接时运行如下:
[22-Sep-2014 14:29:59 Asia/Shanghai] PHP Notice: Undefined variable: foo in /tmp/null.php on line 6
[foo] => xiang
而不用unset而用NULL后:
<?php
$foo = "";
$foo = "jack";
$foo = NULL;
//unset($foo);
$foo .= "xiang";
$vars = get_defined_vars();
print_r($vars);
解决了这个变量的问题:
[foo] => xiang
说明这样做是可行的,完毕。
$handle = popen($command, "r");
do {
$excuteResult = fread($handle, 2024);
if (strlen($excuteResult) == 0) {
pclose($handle); //关闭pipe
break;
}
$excuteResultAll .= $excuteResult;
} while (true);
//这儿用到的$excuteResultAll 变量,下面还要用,防止污染,则需要给NULL值清空,用unset后需要再定义一次相同的变量,否则会出现:
Undefined variable: excuteResultAll in /data/htdocs/jackxiang.com/index.php on line 354
do {
$excuteResult = fread($handle, 2024);
if (strlen($excuteResult) == 0) {
pclose($handle); //关闭pipe
break;
}
$excuteResultAll .= $excuteResult;
} while (true);
______________________________小demon实践如下:______________________________
php null.php
<?php
$foo = "";
$foo = "jack";
unset($foo);
$foo .= "xiang";
$vars = get_defined_vars();
通过unset后,$foo变量用点连接时运行如下:
[22-Sep-2014 14:29:59 Asia/Shanghai] PHP Notice: Undefined variable: foo in /tmp/null.php on line 6
[foo] => xiang
而不用unset而用NULL后:
<?php
$foo = "";
$foo = "jack";
$foo = NULL;
//unset($foo);
$foo .= "xiang";
$vars = get_defined_vars();
print_r($vars);
解决了这个变量的问题:
[foo] => xiang
说明这样做是可行的,完毕。
MySQL的用户密码可以为特殊字符么?
不能出现"!" 其它都可以的。(MySQL用户密码中的特殊字符叹号(!)的妙用,把!后面的字符串做为命令执行了,在本文最后讲。)
但是当出现有* &号时,在登录时会出现:
mysql -uroot -pjack&*vac //这样是不行的(-p后不能有空格,否则还得输入密码,认为是db。),用双引号引起来也不行,最后,只能单引号,才能成功:
mysql -uroot -p'jack&*vac'
[root@jackxiang cache]# mysql -uroot p'jack&*vac'
mysql>
登录成功!
_______________________Mysql密码里包含叹号,其!后面的字符串做为命令执行了_______________________________
MySQL用户密码中的特殊字符叹号(!)的妙用:
这篇文章主要介绍了MySQL用户密码中的特殊字符叹号(!)的妙用,本文介绍的是如果你的密码中含有叹号(!),那么在控制台登录时会出现错误哦,需要的朋友可以参考下
使用叹号(!)禁止用户终端进入的一个方法。
mysql> grant all privileges on wubx.* to ‘wubx'@'172.16.100.185′ identified by ‘fd52!wubx&,';
Query OK, 0 rows affected (0.00 sec)
mysql>quit;
#mysql -h 172.16.100.185 -u wubx -pfd52!wubx&,
-bash: !wubx@,: event not found
仔细看一下,原来他把!后面的字符串做为命令执行了。又试了一个Navicat的管理端,也一样存在密码不正常的问题。
在测一下程序方面是不是可以用,写一个PHP测一下。
$link = mysql_connect('172.16.100.185′,'wubx','fd52!wubx&,');
if (!link){
die(‘Could not connect:'.mysql_error());
}
echo ‘Connected successfully';mysql_close($link);
?>
#php testdb.php
Connected successfully
还看程序中能正常识别。
PHP还是可以OK通过的。
摘自:http://www.jb51.net/article/52526.htm
不能出现"!" 其它都可以的。(MySQL用户密码中的特殊字符叹号(!)的妙用,把!后面的字符串做为命令执行了,在本文最后讲。)
但是当出现有* &号时,在登录时会出现:
mysql -uroot -pjack&*vac //这样是不行的(-p后不能有空格,否则还得输入密码,认为是db。),用双引号引起来也不行,最后,只能单引号,才能成功:
mysql -uroot -p'jack&*vac'
[root@jackxiang cache]# mysql -uroot p'jack&*vac'
mysql>
登录成功!
_______________________Mysql密码里包含叹号,其!后面的字符串做为命令执行了_______________________________
MySQL用户密码中的特殊字符叹号(!)的妙用:
这篇文章主要介绍了MySQL用户密码中的特殊字符叹号(!)的妙用,本文介绍的是如果你的密码中含有叹号(!),那么在控制台登录时会出现错误哦,需要的朋友可以参考下
使用叹号(!)禁止用户终端进入的一个方法。
mysql> grant all privileges on wubx.* to ‘wubx'@'172.16.100.185′ identified by ‘fd52!wubx&,';
Query OK, 0 rows affected (0.00 sec)
mysql>quit;
#mysql -h 172.16.100.185 -u wubx -pfd52!wubx&,
-bash: !wubx@,: event not found
仔细看一下,原来他把!后面的字符串做为命令执行了。又试了一个Navicat的管理端,也一样存在密码不正常的问题。
在测一下程序方面是不是可以用,写一个PHP测一下。
$link = mysql_connect('172.16.100.185′,'wubx','fd52!wubx&,');
if (!link){
die(‘Could not connect:'.mysql_error());
}
echo ‘Connected successfully';mysql_close($link);
?>
#php testdb.php
Connected successfully
还看程序中能正常识别。
PHP还是可以OK通过的。
摘自:http://www.jb51.net/article/52526.htm
《汉书·韩安国传》:“强弩之末,不能入鲁缟;冲风之衰,不能起毛羽。”—一即使是强弓射出的利箭,射到极远的地方,力量已尽时,就连极薄的鲁缟也射不穿了;即使是狂暴的烈风,刮过去后,剩下最后的一丝微力,就连极轻的羽毛都吹不起来。(缟,是一种白色的薄绢,以古时鲁国所产为最薄最细,故称鲁缟。)
应该是势,因为古文中前省略是最常见的,第一句已经说了“即使是最强劲的弓射出的箭,到了最后”(其)势:势解释为力量,前面承前省略“其”指箭。就连极薄的鲁缟也射不穿了
《汉书·韩安国传》:“强弩之末,不能入鲁缟;冲风之衰,不能起毛羽。”—一即使是强弓射出的利箭,射到极远的地方,力量已尽时,就连极薄的鲁缟也射不穿了;即使是狂暴的烈风,刮过去后,剩下最后的一丝微力,就连极轻的羽毛都吹不起来。(缟,是一种白色的薄绢,以古时鲁国所产为最薄最细,故称鲁缟。)
韩安国,字长孺,汉初人。汉武帝时,为御史大夫。当时,北方的匈奴,派人到汉朝来要求和好,武帝就同大臣商议对策。有一个名叫王恢的,曾在靠近匈奴的边境地区当过许多年地方官,很熟悉匈奴的情况,他说:“跟匈奴和好,总是长久不了,不出三几年,它就又要背约,不如不理它,干脆爱兵,把其彻底征服。”
韩安国竭力反对,道:“人家派人来同我们和好,我们反而进攻,这怎么说得过去?况且,千里远征,路途跋涉,战线拉得很长,人马拖得很累,强弩之末,不能入鲁缟,冲风之衰,不能起毛羽,我们未必能打胜仗!”
大臣们都认为韩安国说得有理,汉武帝也表示同意,于是接受匈奴要求,进行和好谈判,建立和好关系。
这段故事,在《史记·韩长孺列传》也有记载,不过文字稍有不同,其中“强弩之末”两句,写作“强弩之极,矢不能穿鲁缟;冲风之末,力不能漂鸿毛。”意思完全相同。
《三国志·蜀志·诸葛亮传》载,曹操大举南下时,诸葛亮访问东吴,请孙权出兵,同刘备一起,合力抗御曹操。诸葛亮谈到,曹操兵力虽强,却已相当疲劳:“曹操之众,远来疲敝,闻追豫州(指刘备)轻骑一日一夜行三百余里,此所谓‘强弩之末,势不能穿鲁缟’者也!”
比喻力量已极度衰竭、毫不中用,就常用“强弩之末”来形容。
参考资料:http://lyh.wlnw.gov.cn/asp/Book_G.asp?lyhid=1323,
应该是势,因为古文中前省略是最常见的,第一句已经说了“即使是最强劲的弓射出的箭,到了最后”(其)势:势解释为力量,前面承前省略“其”指箭。就连极薄的鲁缟也射不穿了
《汉书·韩安国传》:“强弩之末,不能入鲁缟;冲风之衰,不能起毛羽。”—一即使是强弓射出的利箭,射到极远的地方,力量已尽时,就连极薄的鲁缟也射不穿了;即使是狂暴的烈风,刮过去后,剩下最后的一丝微力,就连极轻的羽毛都吹不起来。(缟,是一种白色的薄绢,以古时鲁国所产为最薄最细,故称鲁缟。)
韩安国,字长孺,汉初人。汉武帝时,为御史大夫。当时,北方的匈奴,派人到汉朝来要求和好,武帝就同大臣商议对策。有一个名叫王恢的,曾在靠近匈奴的边境地区当过许多年地方官,很熟悉匈奴的情况,他说:“跟匈奴和好,总是长久不了,不出三几年,它就又要背约,不如不理它,干脆爱兵,把其彻底征服。”
韩安国竭力反对,道:“人家派人来同我们和好,我们反而进攻,这怎么说得过去?况且,千里远征,路途跋涉,战线拉得很长,人马拖得很累,强弩之末,不能入鲁缟,冲风之衰,不能起毛羽,我们未必能打胜仗!”
大臣们都认为韩安国说得有理,汉武帝也表示同意,于是接受匈奴要求,进行和好谈判,建立和好关系。
这段故事,在《史记·韩长孺列传》也有记载,不过文字稍有不同,其中“强弩之末”两句,写作“强弩之极,矢不能穿鲁缟;冲风之末,力不能漂鸿毛。”意思完全相同。
《三国志·蜀志·诸葛亮传》载,曹操大举南下时,诸葛亮访问东吴,请孙权出兵,同刘备一起,合力抗御曹操。诸葛亮谈到,曹操兵力虽强,却已相当疲劳:“曹操之众,远来疲敝,闻追豫州(指刘备)轻骑一日一夜行三百余里,此所谓‘强弩之末,势不能穿鲁缟’者也!”
比喻力量已极度衰竭、毫不中用,就常用“强弩之末”来形容。
参考资料:http://lyh.wlnw.gov.cn/asp/Book_G.asp?lyhid=1323,
LINUX下如何查看内存品牌和速率啊?
Unix/LinuxC技术 jackxiang 2014-9-17 11:02
背景:想加个内存,Mysql服务器上的内存不够了,就算可以插(插槽都有,现在是4条4G内存,还有空闲八个槽。),不知道兼不兼容,否则不稳定的,不兼容的话,死的更惨,这个不一定了,停产了,就没有办法了。怎么办?得看内存的品牌及型号。
[root@jackxiang ~]# rpm -qa|grep dmidecode
dmidecode-2.11-2.el6.x86_64
[root@jackxiang ~]# dmidecode
查看服务器型号、序列号:
[root@jackxiang ~]# dmidecode|grep "System Information" -A9|egrep "Manufacturer|Product|Serial"
Manufacturer: VMware, Inc.
Product Name: VMware Virtual Platform
Serial Number: VMware-42 18 c8 32 77 c6 ec 16-3f 31 94 e9 d0 34 a6 ac
Linux 查看内存的插槽数,已经使用多少插槽.每条内存多大:
[root@jackxiang ~]# dmidecode|grep -A5 "Memory Device"|grep Size|grep -v Range
Size: 4096 MB
Size: 2048 MB
Size: No Module Installed
Size: No Module Installed
Linux 查看内存的频率:
[root@localhost htdocs]# dmidecode|grep -A16 "Memory Device"|grep 'Speed'
Speed: 667 MHz (1.5 ns)
Speed: 667 MHz (1.5 ns)
Speed: 667 MHz (1.5 ns)
Speed: 667 MHz (1.5 ns)
Speed: Unknown
在linux查看内存型号的命令:
dmidecode -t memory
查看主板型号:
dmidecode |grep -A16 "System Information$"
内存槽及内存条:
dmidecode |grep -A16 "Memory Device$"
硬盘:
fdisk -l
smartctl -a /dev/sda
网卡:
mii-tool
————————————————————————————————————————————————————
dmidecode|grep -P 'Maximum\s+Capacity' //最大支持几G内存
# cat /proc/cpuinfo //查看cpu个数与频率
# dmidecode |grep "Product Name" //查看服务器品牌和型号
# dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range //总共几个插槽,已使用几个插槽
Size: 1024 MB //此插槽有1根1G内存
Size: 1024 MB //此插槽有1根1G内存
Size: 1024 MB //此插槽有1根1G内存
Size: 1024 MB //此插槽有1根1G内存
Size: No Module Installed //此插槽未使用
Size: No Module Installed //此插槽未使用
# dmidecode -t 17 //数字17是dmidecode的参数,本文最后有其他数字参数
dmidecode 2.7
SMBIOS 2.4 present.
Handle 0x0015, DMI type 17, 27 bytes.
Memory Device
Array Handle: 0x0013
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB 【插槽1有1条2GB内存】
Form Factor: DIMM
Set: None
Locator: DIMM00
Bank Locator: BANK
Type: Other
Type Detail: Other
Speed: 667 MHz (1.5 ns)
Manufacturer:
Serial Number: BZACSKZ001
Asset Tag: RAM82
Part Number: MT9HTF6472FY-53EA2
Handle 0x0017, DMI type 17, 27 bytes.
Memory Device
Array Handle: 0x0013
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB 【插槽2有1条2GB内存】
Form Factor: DIMM
Set: None
Locator: DIMM10
Bank Locator: BANK
Type: Other
Type Detail: Other
Speed: 667 MHz (1.5 ns)
Manufacturer:
Serial Number: BZACSKZ001
Asset Tag: RAM83
Part Number: MT9HTF6472FY-53EA2
Handle 0x0019, DMI type 17, 27 bytes.
Memory Device
Array Handle: 0x0013
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB 【插槽3有1条2GB内存】
Form Factor: DIMM
Set: None
Locator: DIMM20
Bank Locator: BANK
Type: Other
Type Detail: Other
Speed: 667 MHz (1.5 ns)
Manufacturer:
Serial Number: BZACSKZ001
Asset Tag: RAM84
Part Number: MT9HTF6472FY-53EA2
Handle 0x001B, DMI type 17, 27 bytes.
Memory Device
Array Handle: 0x0013
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB 【插槽4有1条2GB内存】
Form Factor: DIMM
Set: None
Locator: DIMM30
Bank Locator: BANK
Type: Other
Type Detail: Other
Speed: 667 MHz (1.5 ns)
Manufacturer:
Serial Number: BZACSKZ001
Asset Tag: RAM85
Part Number: MT9HTF6472FY-53EA2
实践来源:
http://www.jbxue.com/LINUXjishu/10053.html
http://www.linuxsir.org/bbs/thread309696.html
http://xclinux.diandian.com/post/2013-04-16/40049844350
[root@jackxiang ~]# rpm -qa|grep dmidecode
dmidecode-2.11-2.el6.x86_64
[root@jackxiang ~]# dmidecode
查看服务器型号、序列号:
[root@jackxiang ~]# dmidecode|grep "System Information" -A9|egrep "Manufacturer|Product|Serial"
Manufacturer: VMware, Inc.
Product Name: VMware Virtual Platform
Serial Number: VMware-42 18 c8 32 77 c6 ec 16-3f 31 94 e9 d0 34 a6 ac
Linux 查看内存的插槽数,已经使用多少插槽.每条内存多大:
[root@jackxiang ~]# dmidecode|grep -A5 "Memory Device"|grep Size|grep -v Range
Size: 4096 MB
Size: 2048 MB
Size: No Module Installed
Size: No Module Installed
Linux 查看内存的频率:
[root@localhost htdocs]# dmidecode|grep -A16 "Memory Device"|grep 'Speed'
Speed: 667 MHz (1.5 ns)
Speed: 667 MHz (1.5 ns)
Speed: 667 MHz (1.5 ns)
Speed: 667 MHz (1.5 ns)
Speed: Unknown
在linux查看内存型号的命令:
dmidecode -t memory
查看主板型号:
dmidecode |grep -A16 "System Information$"
内存槽及内存条:
dmidecode |grep -A16 "Memory Device$"
硬盘:
fdisk -l
smartctl -a /dev/sda
网卡:
mii-tool
————————————————————————————————————————————————————
dmidecode|grep -P 'Maximum\s+Capacity' //最大支持几G内存
# cat /proc/cpuinfo //查看cpu个数与频率
# dmidecode |grep "Product Name" //查看服务器品牌和型号
# dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range //总共几个插槽,已使用几个插槽
Size: 1024 MB //此插槽有1根1G内存
Size: 1024 MB //此插槽有1根1G内存
Size: 1024 MB //此插槽有1根1G内存
Size: 1024 MB //此插槽有1根1G内存
Size: No Module Installed //此插槽未使用
Size: No Module Installed //此插槽未使用
# dmidecode -t 17 //数字17是dmidecode的参数,本文最后有其他数字参数
dmidecode 2.7
SMBIOS 2.4 present.
Handle 0x0015, DMI type 17, 27 bytes.
Memory Device
Array Handle: 0x0013
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB 【插槽1有1条2GB内存】
Form Factor: DIMM
Set: None
Locator: DIMM00
Bank Locator: BANK
Type: Other
Type Detail: Other
Speed: 667 MHz (1.5 ns)
Manufacturer:
Serial Number: BZACSKZ001
Asset Tag: RAM82
Part Number: MT9HTF6472FY-53EA2
Handle 0x0017, DMI type 17, 27 bytes.
Memory Device
Array Handle: 0x0013
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB 【插槽2有1条2GB内存】
Form Factor: DIMM
Set: None
Locator: DIMM10
Bank Locator: BANK
Type: Other
Type Detail: Other
Speed: 667 MHz (1.5 ns)
Manufacturer:
Serial Number: BZACSKZ001
Asset Tag: RAM83
Part Number: MT9HTF6472FY-53EA2
Handle 0x0019, DMI type 17, 27 bytes.
Memory Device
Array Handle: 0x0013
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB 【插槽3有1条2GB内存】
Form Factor: DIMM
Set: None
Locator: DIMM20
Bank Locator: BANK
Type: Other
Type Detail: Other
Speed: 667 MHz (1.5 ns)
Manufacturer:
Serial Number: BZACSKZ001
Asset Tag: RAM84
Part Number: MT9HTF6472FY-53EA2
Handle 0x001B, DMI type 17, 27 bytes.
Memory Device
Array Handle: 0x0013
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB 【插槽4有1条2GB内存】
Form Factor: DIMM
Set: None
Locator: DIMM30
Bank Locator: BANK
Type: Other
Type Detail: Other
Speed: 667 MHz (1.5 ns)
Manufacturer:
Serial Number: BZACSKZ001
Asset Tag: RAM85
Part Number: MT9HTF6472FY-53EA2
实践来源:
http://www.jbxue.com/LINUXjishu/10053.html
http://www.linuxsir.org/bbs/thread309696.html
http://xclinux.diandian.com/post/2013-04-16/40049844350
背景:MYSQL多实例配置、dc提到在实际开发中,其实在生产环境上也有类似的运用,因多种原因,1.存储技术飞速发展,IO不再是瓶颈 2.MySQL对多核CPU利用率低 3.NUMA对MySQL性能的影响等,链接在:http://blog.csdn.net/hylongsuny/article/details/7892488 。
在实际的开发过程中,可能会需要在一台服务器上部署多个MYSQL实例,那建议使用MYSQL官方的解决方案 mysqld_multi
1.修改my.cnf
如一个定义两个实例的参考配置:
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = your_user
password = your_password
[mysqld1]
datadir = /data/db/my1
#连接
port = 3306
socket = /tmp/mysql3306.sock
#binlog
log-bin=/data/db/mylog1/mysql-bin
binlog_format=mixed
binlog_cache_size = 32M
expire_logs_days = 30
[mysqld2]
datadir = /data/db/my2
#连接
port = 3307
socket = /tmp/mysql3307.sock
#binlog
log-bin=/data/db/mylog2/mysql-bin
binlog_format=mixed
binlog_cache_size = 32M
expire_logs_days = 3
2.创建数据目录
mkdir -p /data/db/my21
mkdir -p /data/db/my2
chown mysql.mysql /data/db/my1 -R
chown mysql.mysql /data/db/my2 -R
3.初始化DB
/usr/local/mysql/scripts/mysql_install_db --datadir=/data/db/my1/ -uroot (mysql_install_db也是MYSQL官方自带工具)
/usr/local/mysql/scripts/mysql_install_db --datadir=/data/db/my2/ -uroot
chown mysql.mysql /data/db/my1/ -R
chown mysql.mysql /data/db/my2/ -R
4. 安装工具
cp /usr/local/mysql/bin/my_print_defaults /usr/bin/
cp /usr/local/mysql/bin/mysqld_multi /usr/bin/
5.创建、授权用户
CREATE USER "your_user"@"192.168.1.%" IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO "your_user"@"192.168.1.%";
flush privileges;
至此,mysql多实例配置已经完毕。我们看到多个不同的MYSQL实例是共用my.cnf的。多实例命令行管理:
1.mysql启动
mysqld_multi start 1 启动实例1
mysqld_multi start 1-2 启动实例1,2
2.mysql重启
mysqld_multi restart 1 重启实例1
mysqld_multi restart 1-2 重启实例1,2
3.mysql关闭
mysqld_multi stop 1 关闭实例1
mysqld_multi stop 1-2 关闭实例1,2
4.命令行登陆实例2
mysql -u your_user -p your_password -P3307 -S /tmp/mysql3307.sock
摘自Dc(施俊伟)兄弟的唐品blog:
http://www.dcshi.com/?p=410#more-410
在实际的开发过程中,可能会需要在一台服务器上部署多个MYSQL实例,那建议使用MYSQL官方的解决方案 mysqld_multi
1.修改my.cnf
如一个定义两个实例的参考配置:
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = your_user
password = your_password
[mysqld1]
datadir = /data/db/my1
#连接
port = 3306
socket = /tmp/mysql3306.sock
#binlog
log-bin=/data/db/mylog1/mysql-bin
binlog_format=mixed
binlog_cache_size = 32M
expire_logs_days = 30
[mysqld2]
datadir = /data/db/my2
#连接
port = 3307
socket = /tmp/mysql3307.sock
#binlog
log-bin=/data/db/mylog2/mysql-bin
binlog_format=mixed
binlog_cache_size = 32M
expire_logs_days = 3
2.创建数据目录
mkdir -p /data/db/my21
mkdir -p /data/db/my2
chown mysql.mysql /data/db/my1 -R
chown mysql.mysql /data/db/my2 -R
3.初始化DB
/usr/local/mysql/scripts/mysql_install_db --datadir=/data/db/my1/ -uroot (mysql_install_db也是MYSQL官方自带工具)
/usr/local/mysql/scripts/mysql_install_db --datadir=/data/db/my2/ -uroot
chown mysql.mysql /data/db/my1/ -R
chown mysql.mysql /data/db/my2/ -R
4. 安装工具
cp /usr/local/mysql/bin/my_print_defaults /usr/bin/
cp /usr/local/mysql/bin/mysqld_multi /usr/bin/
5.创建、授权用户
CREATE USER "your_user"@"192.168.1.%" IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO "your_user"@"192.168.1.%";
flush privileges;
至此,mysql多实例配置已经完毕。我们看到多个不同的MYSQL实例是共用my.cnf的。多实例命令行管理:
1.mysql启动
mysqld_multi start 1 启动实例1
mysqld_multi start 1-2 启动实例1,2
2.mysql重启
mysqld_multi restart 1 重启实例1
mysqld_multi restart 1-2 重启实例1,2
3.mysql关闭
mysqld_multi stop 1 关闭实例1
mysqld_multi stop 1-2 关闭实例1,2
4.命令行登陆实例2
mysql -u your_user -p your_password -P3307 -S /tmp/mysql3307.sock
摘自Dc(施俊伟)兄弟的唐品blog:
http://www.dcshi.com/?p=410#more-410
手机用的Andoried手机,发现拍照片特别是从电脑上屏幕上拍(本来想用豌豆荚传到手机相册里,但是手机版本的微信没有显示出来,不知为什么,难道其只显示里面通过手机镜头的照片?没细研究),但这样搞主要是手机镜头不行,再就是电脑屏有闪光,拍出来的效果不好。
怎么在电脑上修改微信头像?如下Url实践没有问题:
http://jingyan.baidu.com/album/1612d5007f3ae7e20e1eee06.html?picindex=1
怎么在电脑上修改微信头像?如下Url实践没有问题:
http://jingyan.baidu.com/album/1612d5007f3ae7e20e1eee06.html?picindex=1
在Raspberry Pi上跑FreeBSD11,修改raspberry pi上安装的freebsd可用内存大小,定制Raspberry Pi网站。
Unix/LinuxC技术 jackxiang 2014-9-15 21:53
FreeBSD 在 RPi 2上的用户名和密码:
默认的密码是 freebsd/freebsd 和 root/root
FreeBSD系统中无线网络连接无线网卡:
http://www.111cn.net/sys/freebsd/59534.htm
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2015-12/126724.htm
FreeBSD 11-CURRENT on Raspberry Pi Apache 2.4/MySQL 5.6/PHP 5.6, 如何在树莓派 2B 上安装 FreeBSD及网络配置:
http://jackxiang.com/post/8455/
定制Raspberry Pi网站:
http://www.embest-tech.cn/pi-customization/
FreeBSD has supported Raspberry Pi since November 2012, and the current production version (FreeBSD 10) is available as a pre-built image which can be copied onto a memory card.
Download the latest image file from the official FreeBSD ARM page. This page has images for other ARM-based boards like the Beaglebone and the Pandaboard. You need to download an image for the “RPI-B”: for example “FreeBSD-10.0-RELEASE-arm-armv6-RPI-B-20140131-r260789.img.bz2”
摘自 : https://www.maketecheasier.com/freebsd-on-raspberry-pi/
DRAM: 944 MiB
WARNING: Caches not enabled
RPI 2 Model B
MMC: bcm2835_sdhci: 0
reading uboot.env
修改raspberry pi上安装的freebsd可用内存大小:
http://blog.sina.com.cn/s/blog_a0aacb430101mj69.html
background:Freebsd是真正的Unix血统的Os,其稳定性是顶级的,真正的坚如磐石。在树莓派下也有ARM版本了,最新稳定版本:
ftp://ftp6.freebsd.org/pub/FreeBSD/snapshots/arm/armv6/ISO-IMAGES/10.0//FreeBSD-10.0-STABLE-arm-armv6-RPI-B-20140822-r270340.img.bz2
CheckSum:
ftp://ftp6.freebsd.org/pub/FreeBSD/snapshots/arm/armv6/ISO-IMAGES/10.0/CHECKSUM.SHA256-10.0-STABLE-arm-armv6-RPI-B-20140822-r270340
三、FreeBSD 11 on Raspberri pi 2(树莓派 2 安装 FreeBSD 11) :
A note for my own installation.(树莓派 2 安装 FreeBSD 11)
I tried compiling the FreeBSD 11 by myself, but I found there are ready-to-use systems here.
1. Identify your SD card:
# df -h
you will see the result as
de>/dev/mmcblk0p1de> or de>/dev/sdb1de> or something is different from /sda.
2. Unmount the card
# umount de>/dev/mmcblk0p1de> or de>/dev/sdb1de>
3. Copy your image file to the card, (Very important! DO NOT add the partition number p1 or 1, just use the whole card de>mmcblk0 or sdbde>)
# dd bs=4M if=your-freebsd-rpi2-image.img of=/dev/de>mmcblk0de>
4. First boot
After the raspberry pi 2 is powered on, you need login using user name : root, you need also set the password
# passwd
5.Increase swap space
# dd if=/dev/zero of=/usr/swap0 bs=1m count=1024
# chmod 0600 /usr/swap0
# echo 'md99 none swap sw,file=/usr/swap0 0 0' >> /etc/fstab
# swapon -aq
*系统目前很卡,还是不建议安装。感觉Raspbian 还是最流畅的。
来自:http://rhuta.blog.163.com/blog/static/17757006220154129421478/
阅读全文
默认的密码是 freebsd/freebsd 和 root/root
FreeBSD系统中无线网络连接无线网卡:
http://www.111cn.net/sys/freebsd/59534.htm
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2015-12/126724.htm
FreeBSD 11-CURRENT on Raspberry Pi Apache 2.4/MySQL 5.6/PHP 5.6, 如何在树莓派 2B 上安装 FreeBSD及网络配置:
http://jackxiang.com/post/8455/
定制Raspberry Pi网站:
http://www.embest-tech.cn/pi-customization/
FreeBSD has supported Raspberry Pi since November 2012, and the current production version (FreeBSD 10) is available as a pre-built image which can be copied onto a memory card.
Download the latest image file from the official FreeBSD ARM page. This page has images for other ARM-based boards like the Beaglebone and the Pandaboard. You need to download an image for the “RPI-B”: for example “FreeBSD-10.0-RELEASE-arm-armv6-RPI-B-20140131-r260789.img.bz2”
摘自 : https://www.maketecheasier.com/freebsd-on-raspberry-pi/
DRAM: 944 MiB
WARNING: Caches not enabled
RPI 2 Model B
MMC: bcm2835_sdhci: 0
reading uboot.env
修改raspberry pi上安装的freebsd可用内存大小:
http://blog.sina.com.cn/s/blog_a0aacb430101mj69.html
background:Freebsd是真正的Unix血统的Os,其稳定性是顶级的,真正的坚如磐石。在树莓派下也有ARM版本了,最新稳定版本:
ftp://ftp6.freebsd.org/pub/FreeBSD/snapshots/arm/armv6/ISO-IMAGES/10.0//FreeBSD-10.0-STABLE-arm-armv6-RPI-B-20140822-r270340.img.bz2
CheckSum:
ftp://ftp6.freebsd.org/pub/FreeBSD/snapshots/arm/armv6/ISO-IMAGES/10.0/CHECKSUM.SHA256-10.0-STABLE-arm-armv6-RPI-B-20140822-r270340
三、FreeBSD 11 on Raspberri pi 2(树莓派 2 安装 FreeBSD 11) :
A note for my own installation.(树莓派 2 安装 FreeBSD 11)
I tried compiling the FreeBSD 11 by myself, but I found there are ready-to-use systems here.
1. Identify your SD card:
# df -h
you will see the result as
de>/dev/mmcblk0p1de> or de>/dev/sdb1de> or something is different from /sda.
2. Unmount the card
# umount de>/dev/mmcblk0p1de> or de>/dev/sdb1de>
3. Copy your image file to the card, (Very important! DO NOT add the partition number p1 or 1, just use the whole card de>mmcblk0 or sdbde>)
# dd bs=4M if=your-freebsd-rpi2-image.img of=/dev/de>mmcblk0de>
4. First boot
After the raspberry pi 2 is powered on, you need login using user name : root, you need also set the password
# passwd
5.Increase swap space
# dd if=/dev/zero of=/usr/swap0 bs=1m count=1024
# chmod 0600 /usr/swap0
# echo 'md99 none swap sw,file=/usr/swap0 0 0' >> /etc/fstab
# swapon -aq
*系统目前很卡,还是不建议安装。感觉Raspbian 还是最流畅的。
来自:http://rhuta.blog.163.com/blog/static/17757006220154129421478/
阅读全文
背景:用爱奇艺网页播放电视剧,发现用那个遨游浏览器神马跳过能跳过的,这货好像不行,一看,它有一个请求在做时间记录着呢,返回204,这样就能像一个对时功能一样,防止用户跳过。
HTTP 204(no content)表示响应执行成功,但没有数据返回,浏览器不用刷新,不用导向新页面。
HTTP 205(reset content) 表示响应执行成功,重置页面(Form表单),方便用户下次输入。
使用ajax时,当只需要知道响应成功或失败的情况,则可以使用状态码HTTP 204来代替HTTP 200,减少多余的数据传输。
例子:ajax提交用户名、文章id,记录用户访问过该文章
[html] view plaincopy
$(document).ready(function(){
$.get("api.php", {name:'fdipzone',article_id:'100'});
})
HTTP 状态码header输出:
[php] view plaincopy
/**
* HTTP Protocol defined status codes
* @param int $num
*/
function HTTPStatus($num) {
static $http = array (
100 => "HTTP/1.1 100 Continue",
101 => "HTTP/1.1 101 Switching Protocols",
200 => "HTTP/1.1 200 OK",
201 => "HTTP/1.1 201 Created",
202 => "HTTP/1.1 202 Accepted",
203 => "HTTP/1.1 203 Non-Authoritative Information",
204 => "HTTP/1.1 204 No Content",
205 => "HTTP/1.1 205 Reset Content",
206 => "HTTP/1.1 206 Partial Content",
300 => "HTTP/1.1 300 Multiple Choices",
301 => "HTTP/1.1 301 Moved Permanently",
302 => "HTTP/1.1 302 Found",
303 => "HTTP/1.1 303 See Other",
304 => "HTTP/1.1 304 Not Modified",
305 => "HTTP/1.1 305 Use Proxy",
307 => "HTTP/1.1 307 Temporary Redirect",
400 => "HTTP/1.1 400 Bad Request",
401 => "HTTP/1.1 401 Unauthorized",
402 => "HTTP/1.1 402 Payment Required",
403 => "HTTP/1.1 403 Forbidden",
404 => "HTTP/1.1 404 Not Found",
405 => "HTTP/1.1 405 Method Not Allowed",
406 => "HTTP/1.1 406 Not Acceptable",
407 => "HTTP/1.1 407 Proxy Authentication Required",
408 => "HTTP/1.1 408 Request Time-out",
409 => "HTTP/1.1 409 Conflict",
410 => "HTTP/1.1 410 Gone",
411 => "HTTP/1.1 411 Length Required",
412 => "HTTP/1.1 412 Precondition Failed",
413 => "HTTP/1.1 413 Request Entity Too Large",
414 => "HTTP/1.1 414 Request-URI Too Large",
415 => "HTTP/1.1 415 Unsupported Media Type",
416 => "HTTP/1.1 416 Requested range not satisfiable",
417 => "HTTP/1.1 417 Expectation Failed",
500 => "HTTP/1.1 500 Internal Server Error",
501 => "HTTP/1.1 501 Not Implemented",
502 => "HTTP/1.1 502 Bad Gateway",
503 => "HTTP/1.1 503 Service Unavailable",
504 => "HTTP/1.1 504 Gateway Time-out"
);
header($http[$num]);
}
来自:http://blog.csdn.net/fdipzone/article/details/12322575
HTTP 204(no content)表示响应执行成功,但没有数据返回,浏览器不用刷新,不用导向新页面。
HTTP 205(reset content) 表示响应执行成功,重置页面(Form表单),方便用户下次输入。
使用ajax时,当只需要知道响应成功或失败的情况,则可以使用状态码HTTP 204来代替HTTP 200,减少多余的数据传输。
例子:ajax提交用户名、文章id,记录用户访问过该文章
[html] view plaincopy
$(document).ready(function(){
$.get("api.php", {name:'fdipzone',article_id:'100'});
})
HTTP 状态码header输出:
[php] view plaincopy
/**
* HTTP Protocol defined status codes
* @param int $num
*/
function HTTPStatus($num) {
static $http = array (
100 => "HTTP/1.1 100 Continue",
101 => "HTTP/1.1 101 Switching Protocols",
200 => "HTTP/1.1 200 OK",
201 => "HTTP/1.1 201 Created",
202 => "HTTP/1.1 202 Accepted",
203 => "HTTP/1.1 203 Non-Authoritative Information",
204 => "HTTP/1.1 204 No Content",
205 => "HTTP/1.1 205 Reset Content",
206 => "HTTP/1.1 206 Partial Content",
300 => "HTTP/1.1 300 Multiple Choices",
301 => "HTTP/1.1 301 Moved Permanently",
302 => "HTTP/1.1 302 Found",
303 => "HTTP/1.1 303 See Other",
304 => "HTTP/1.1 304 Not Modified",
305 => "HTTP/1.1 305 Use Proxy",
307 => "HTTP/1.1 307 Temporary Redirect",
400 => "HTTP/1.1 400 Bad Request",
401 => "HTTP/1.1 401 Unauthorized",
402 => "HTTP/1.1 402 Payment Required",
403 => "HTTP/1.1 403 Forbidden",
404 => "HTTP/1.1 404 Not Found",
405 => "HTTP/1.1 405 Method Not Allowed",
406 => "HTTP/1.1 406 Not Acceptable",
407 => "HTTP/1.1 407 Proxy Authentication Required",
408 => "HTTP/1.1 408 Request Time-out",
409 => "HTTP/1.1 409 Conflict",
410 => "HTTP/1.1 410 Gone",
411 => "HTTP/1.1 411 Length Required",
412 => "HTTP/1.1 412 Precondition Failed",
413 => "HTTP/1.1 413 Request Entity Too Large",
414 => "HTTP/1.1 414 Request-URI Too Large",
415 => "HTTP/1.1 415 Unsupported Media Type",
416 => "HTTP/1.1 416 Requested range not satisfiable",
417 => "HTTP/1.1 417 Expectation Failed",
500 => "HTTP/1.1 500 Internal Server Error",
501 => "HTTP/1.1 501 Not Implemented",
502 => "HTTP/1.1 502 Bad Gateway",
503 => "HTTP/1.1 503 Service Unavailable",
504 => "HTTP/1.1 504 Gateway Time-out"
);
header($http[$num]);
}
来自:http://blog.csdn.net/fdipzone/article/details/12322575
iframe跨域传值超过2M的问题解决
Php/Js/Shell/Go jackxiang 2014-9-11 18:20
iframe跨域传值超过2M的问题解决
使用iframe进行传值时,如果采用URL的方式传递,则最大只能传递大约2k的数据,超过这个长度就会被截断了,那么是否可以采用post的方式传值呢?答案是可以的,我们可以采用js创建一个form表单,并将此form提交到iframe上,这样就能做到打破2k数据的限制。
还需要注意2个问题:
1 tomcat下post不能超过2M的问题
这个需要将tomcat的配置文件server.xml修改一下:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" maxPostSize="0"/>
maxPostSize为0时,表示不用限制长度。
2 跨域的问题
跨域不影响iframe的post传值,发送方的tomcat无需更改,只是需要将接收方的tomcat的maxPostSize修改为0即可。
来自:http://housen1987.iteye.com/blog/1695065
使用iframe进行传值时,如果采用URL的方式传递,则最大只能传递大约2k的数据,超过这个长度就会被截断了,那么是否可以采用post的方式传值呢?答案是可以的,我们可以采用js创建一个form表单,并将此form提交到iframe上,这样就能做到打破2k数据的限制。
还需要注意2个问题:
1 tomcat下post不能超过2M的问题
这个需要将tomcat的配置文件server.xml修改一下:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" maxPostSize="0"/>
maxPostSize为0时,表示不用限制长度。
2 跨域的问题
跨域不影响iframe的post传值,发送方的tomcat无需更改,只是需要将接收方的tomcat的maxPostSize修改为0即可。
来自:http://housen1987.iteye.com/blog/1695065
背景:我查一些按顺序的uuid,后用select in(uuid,uuid2...),查出来的顺序是按uuid ,uuid2么?会不会出现不一致的情况。
select * from table_name where id in ()的时候,MySQL会自动按主键自增排序,要是按给定的顺序来取,如何实现呢?
select * from table_name where id in (122,1,5,323,23,1200) order by find_in_set(id, '122,1,5,323,23,1200')
这样读取出来的顺序为 122,1,5,323,23,1200
来自:http://blog.163.com/zhaoyingzhaoying@yeah/blog/static/168024152201110149140931/
示例:
Mysql FIND_IN_SET 语句原始排序:
find_in_set()
问:
mysql中怎么按in语句中的id顺序取数据
select * from ecs_goods where goods_id in (14,1,33,23)
按14,1,33,23这个顺序取
答:
在程序中,$idList='14,1,33,23';
select * from ecs_goods where goods_id in ($idList) order by FIND_IN_SET(goods_id,'$idList')
来自:http://jianzhong5137.blog.163.com/blog/static/9829049201201421430839/
注意,这个find_in_set单条记录没问题,比如唯一id的in。多条记录order会失效(instr也不全行,大部分可以,不过对于特殊的,比如CD是会认为C也在里面的情况。):
select * from act_log where answer in ('B','C','CD') order by instr( "'B','C','CD'",answer)
正确排序: B,B,C
select * from act_log where answer in ('B','C','CD') order by find_in_set( answer,"'B','C','CD'")
排序错误:CD,C,BB,C。
select * from table_name where id in ()的时候,MySQL会自动按主键自增排序,要是按给定的顺序来取,如何实现呢?
select * from table_name where id in (122,1,5,323,23,1200) order by find_in_set(id, '122,1,5,323,23,1200')
这样读取出来的顺序为 122,1,5,323,23,1200
来自:http://blog.163.com/zhaoyingzhaoying@yeah/blog/static/168024152201110149140931/
示例:
Mysql FIND_IN_SET 语句原始排序:
find_in_set()
问:
mysql中怎么按in语句中的id顺序取数据
select * from ecs_goods where goods_id in (14,1,33,23)
按14,1,33,23这个顺序取
答:
在程序中,$idList='14,1,33,23';
select * from ecs_goods where goods_id in ($idList) order by FIND_IN_SET(goods_id,'$idList')
来自:http://jianzhong5137.blog.163.com/blog/static/9829049201201421430839/
注意,这个find_in_set单条记录没问题,比如唯一id的in。多条记录order会失效(instr也不全行,大部分可以,不过对于特殊的,比如CD是会认为C也在里面的情况。):
select * from act_log where answer in ('B','C','CD') order by instr( "'B','C','CD'",answer)
正确排序: B,B,C
select * from act_log where answer in ('B','C','CD') order by find_in_set( answer,"'B','C','CD'")
排序错误:CD,C,BB,C。
美化桌面快捷图片的小键头
如果你之前改过这个,发现桌面的快捷方式不能放在超级任务栏上,那说明你的那种方法不正确。以下是我找到的正确方法可以去掉快捷方式图标的小键头:
找一透明ico图标,保存到C:\windows文件夹中,文件名为Empty.ico
新建一文本文档,粘贴以下内容,另存为扩展名reg的注册表文件,
双击导入,注销后重新登录即可
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons]
"29"="C:\\Windows\\Empty.ico,0"
如果你之前改过这个,发现桌面的快捷方式不能放在超级任务栏上,那说明你的那种方法不正确。以下是我找到的正确方法可以去掉快捷方式图标的小键头:
找一透明ico图标,保存到C:\windows文件夹中,文件名为Empty.ico
新建一文本文档,粘贴以下内容,另存为扩展名reg的注册表文件,
双击导入,注销后重新登录即可
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons]
"29"="C:\\Windows\\Empty.ico,0"