做门户网站的时候 启动用了大量二级域名:
有资料说明,IE在网页载入过程中,在同1时刻,对同1域名并行加的HTTP请求数 量最高为2个,如果网页需要加载的文件数量超过2个(通常远远超过..),要加快网页访问速度,最好将文件分布到多个域名,例如19楼,其js文件采用独 立的域名,据说百度的图片服务器数量在20台以上,当然,2级域名 也行。
有资料说明,IE在网页载入过程中,在同1时刻,对同1域名并行加的HTTP请求数 量最高为2个,如果网页需要加载的文件数量超过2个(通常远远超过..),要加快网页访问速度,最好将文件分布到多个域名,例如19楼,其js文件采用独 立的域名,据说百度的图片服务器数量在20台以上,当然,2级域名 也行。
背景:
对于Nginx的上传模块,在内存上可能会有不少的缩减和PHP的相比,在性能上也就是上传的速度可能要快2,3倍,但这个模块对认证的配置没有,也就是如有某cookie才能上传等,它仅仅就是一个模块,也就是说这一块还有待hack或作者本人去实现,我看网上也有其它兄弟想用并去试着实现这一块。因为是http里的rfc协议的支持,它也就支持断点续传了,这有一篇文章讲述到这一块,于是做出转载之举动,文章如下:
阅读全文
对于Nginx的上传模块,在内存上可能会有不少的缩减和PHP的相比,在性能上也就是上传的速度可能要快2,3倍,但这个模块对认证的配置没有,也就是如有某cookie才能上传等,它仅仅就是一个模块,也就是说这一块还有待hack或作者本人去实现,我看网上也有其它兄弟想用并去试着实现这一块。因为是http里的rfc协议的支持,它也就支持断点续传了,这有一篇文章讲述到这一块,于是做出转载之举动,文章如下:
阅读全文
[实践OK]PHP在经Nginx上传模块上传后的移动文件之rename函数问题的备查。
Php/Js/Shell/Go jackxiang 2013-4-16 17:21
背景:PHP 5.1.6,我这儿有一个需求用Nginx上传模块上传,但是发现用rename有些问题,于是修改为了:copy又可以了。
打听了一下:说是那个移动到的目标的磁盘是挂载的。
Download:
http://www.grid.net.ru/nginx/download/nginx_upload_module-2.2.0.tar.gz
configure and make :
在 PHP 4.3.3 之前,linux系统下rename()是无法跨分区操作的。
有人出现:
而如果在不同的分区,就会失败。不过从其它分区rename()至/tmp/临时目录可以成功,但是再rename()回来就直接提示失败。
网上也没有找到比较合适的解释与解决方案。
其中虽然有效但是感觉不太完美的是将rename()函数替换为 system("mv ".$src." ".$Dest)
这个我编写了PHP的测试脚本验证过,利用PHP内置的chmod()函数将对应的目录的权限设置为0777后,再执行rename(),错误依旧。chown()没有测试。
并且ls -al 察看对应路径的属性,已经被成功修改了。
应该可以确认是有chmod()的权限的。
实践如下:
后来,经实际测试rename不行,于是改用copy函数,并删除掉源,估计和该环境是挂载的目标磁盘有关,后发现是权限问题加上:755权限可以,究竟是什么问题无法得知:
修改为:
Ps:nginx和php都是ww权限在运行。
再试:
再加上:
move_upload_file无法移动文件。
打开错误:
问题根本原因想到想不到滴:
我都说这个rename函数怎么好像有问题哩,原来是这样:
这个rename的目标目录有一个另外的转码的程序在看护是一个daemon,一发现我这边有一个文件上传后rename过去就给转走了,于是给我测试造成一种rename函数有问题有时有(当时这个程序没有取走),有时无(一上传到这个目录刚好被这个程序给取走了),于是觉得这个rename不靠谱,实际上就是这个视频转码的程序。
有一个思路上的问题:
视频转码,我思想上是要是视频文件才转,后来才发现不用是视频文件的后缀,只要在上传时插入数据库后,所有放到那边的文件都给移走了,如果转失败也是在转码那边删除,造成这个目录不可能有一个文件存在,就是.exe的.dll的也会移走,问题得到了解决。
害我找了一上午看这个问题,不过收获到的非PHP的知识,更多的是一种排查问题的思路,EOF。
后记:
Rango 下午 02:37:50
有nginx么?
可以用nginx的上传模块
那个比较强
回忆未来-向东-Jàck 下午 02:38:51
是么,我也用,你有那个的生产环境的配置么?
我感觉那个好像上传时是一点一点的写,它是先把上传的文件内容放内存缓冲么?
Rango 下午 02:39:15
是的。
先到缓存,缓存满了,就写文件
这样效率非常高
文件上传完了,再通知PHp
打听了一下:说是那个移动到的目标的磁盘是挂载的。
Download:
http://www.grid.net.ru/nginx/download/nginx_upload_module-2.2.0.tar.gz
configure and make :
在 PHP 4.3.3 之前,linux系统下rename()是无法跨分区操作的。
有人出现:
而如果在不同的分区,就会失败。不过从其它分区rename()至/tmp/临时目录可以成功,但是再rename()回来就直接提示失败。
网上也没有找到比较合适的解释与解决方案。
其中虽然有效但是感觉不太完美的是将rename()函数替换为 system("mv ".$src." ".$Dest)
这个我编写了PHP的测试脚本验证过,利用PHP内置的chmod()函数将对应的目录的权限设置为0777后,再执行rename(),错误依旧。chown()没有测试。
并且ls -al 察看对应路径的属性,已经被成功修改了。
应该可以确认是有chmod()的权限的。
实践如下:
后来,经实际测试rename不行,于是改用copy函数,并删除掉源,估计和该环境是挂载的目标磁盘有关,后发现是权限问题加上:755权限可以,究竟是什么问题无法得知:
修改为:
Ps:nginx和php都是ww权限在运行。
再试:
再加上:
move_upload_file无法移动文件。
打开错误:
问题根本原因想到想不到滴:
我都说这个rename函数怎么好像有问题哩,原来是这样:
这个rename的目标目录有一个另外的转码的程序在看护是一个daemon,一发现我这边有一个文件上传后rename过去就给转走了,于是给我测试造成一种rename函数有问题有时有(当时这个程序没有取走),有时无(一上传到这个目录刚好被这个程序给取走了),于是觉得这个rename不靠谱,实际上就是这个视频转码的程序。
有一个思路上的问题:
视频转码,我思想上是要是视频文件才转,后来才发现不用是视频文件的后缀,只要在上传时插入数据库后,所有放到那边的文件都给移走了,如果转失败也是在转码那边删除,造成这个目录不可能有一个文件存在,就是.exe的.dll的也会移走,问题得到了解决。
害我找了一上午看这个问题,不过收获到的非PHP的知识,更多的是一种排查问题的思路,EOF。
后记:
Rango 下午 02:37:50
有nginx么?
可以用nginx的上传模块
那个比较强
回忆未来-向东-Jàck 下午 02:38:51
是么,我也用,你有那个的生产环境的配置么?
我感觉那个好像上传时是一点一点的写,它是先把上传的文件内容放内存缓冲么?
Rango 下午 02:39:15
是的。
先到缓存,缓存满了,就写文件
这样效率非常高
文件上传完了,再通知PHp
Firefox上的Flash调试工具——FlashFirebug
Php/Js/Shell/Go jackxiang 2013-4-16 11:48
背景:想调试一下Flash的上传,用Firebug抓包上传的Url抓不到,于是找了下其他的插件,如下。
DownLoad Url:http://www.o-minds.com/payment/flashfirebug?m=1
FlashFirebug是一款可以让开发者在浏览器中直接调试Flash程序的Firefox扩展。通过这款扩展,开发人员可以像在浏览器中调试HTML/JS/CSS那样来直观的进行AS3的调试,操作界面则与Firebug一致。通过这款扩展,Firebug可以覆盖几乎全部的Web开发人员调试需求。
使用Flashfirebug需要安装firefox(当然!)、firebug以及debug版本的flash播放器.
FlashFirebug下载地址:https://addons.mozilla.org/en-US/firefox/addon/161670/
官方网站/使用帮助:http://www.o-minds.com/products/flashfirebug
本文来自:http://blog.sina.com.cn/s/blog_532751d90100r189.html
在adobe的网站上,有几种debug版本
http://www.adobe.com/support/flashplayer/downloads.html
第一个是IE的插件,
Download the Windows Flash Player 10.2 ActiveX control content debugger (for IE) (EXE, 2.99MB)
第二个是firefox的插件,
Download the Windows Flash Player 10.2 Plugin content debugger (for Netscape-compatible browsers) (EXE, 2.95MB)
安装了以上2个插件后,便可以用IE和firefox调试了。
第三个应该是桌面版本
Download the Windows Flash Player 10.2 Projector content debugger (EXE, 6.36MB)
到底是用IE还是firefox可以在window-> preference ->General->Web Browser 里选择合适的浏览。
我安装了chrome firefox ie,但选择里面没有chrome。但要用chrome来调试swf,也需要安装 for Netscape-compatible browsers 这个插件就行了。
C:/Program Files/Mozilla Firefox/plugins/NPSWF32.dll
Flash Builder cannot locate the required debugger version of Adobe Flash Player. You might need to install the debugger version of the Flash Player or reinstall Flash Builder.
来自:http://blog.csdn.net/lijiecong/article/details/6312382
DownLoad Url:http://www.o-minds.com/payment/flashfirebug?m=1
FlashFirebug是一款可以让开发者在浏览器中直接调试Flash程序的Firefox扩展。通过这款扩展,开发人员可以像在浏览器中调试HTML/JS/CSS那样来直观的进行AS3的调试,操作界面则与Firebug一致。通过这款扩展,Firebug可以覆盖几乎全部的Web开发人员调试需求。
使用Flashfirebug需要安装firefox(当然!)、firebug以及debug版本的flash播放器.
FlashFirebug下载地址:https://addons.mozilla.org/en-US/firefox/addon/161670/
官方网站/使用帮助:http://www.o-minds.com/products/flashfirebug
本文来自:http://blog.sina.com.cn/s/blog_532751d90100r189.html
在adobe的网站上,有几种debug版本
http://www.adobe.com/support/flashplayer/downloads.html
第一个是IE的插件,
Download the Windows Flash Player 10.2 ActiveX control content debugger (for IE) (EXE, 2.99MB)
第二个是firefox的插件,
Download the Windows Flash Player 10.2 Plugin content debugger (for Netscape-compatible browsers) (EXE, 2.95MB)
安装了以上2个插件后,便可以用IE和firefox调试了。
第三个应该是桌面版本
Download the Windows Flash Player 10.2 Projector content debugger (EXE, 6.36MB)
到底是用IE还是firefox可以在window-> preference ->General->Web Browser 里选择合适的浏览。
我安装了chrome firefox ie,但选择里面没有chrome。但要用chrome来调试swf,也需要安装 for Netscape-compatible browsers 这个插件就行了。
C:/Program Files/Mozilla Firefox/plugins/NPSWF32.dll
Flash Builder cannot locate the required debugger version of Adobe Flash Player. You might need to install the debugger version of the Flash Player or reinstall Flash Builder.
来自:http://blog.csdn.net/lijiecong/article/details/6312382
1.系统管理--》常用设置--》选项--》Accept remote API calls 启用。
2.继续是左侧栏: 'System' -> 'Plugins' ,插件管理找到 'RPC JIRA Plugins' ,确保 'System SOAP Services' 及 'System XML-RPC Services' 处于可用状态。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在使用Mylyn连接JIRA的时候发现一个错误,大概意思是JIRA的RPC服务未开启。
以下提供JIRA开启RPC的方法,方法很简单:
1. 进入JIRA管理的页面,在左侧栏中找到:'Global Settings' -> 'General Configuration' ,将右侧的 'Option' 中的 'Accept remote API calls' 设为 'ON'
2. 继续是左侧栏: 'System' -> 'Plugins' ,找到 'RPC JIRA Plugins' ,确保 'System SOAP Services' 及 'System XML-RPC Services' 处于可用状态。
这是Mylyn已经可以连接JIRA了。
提示:
如果在第二步中没有找到对应的两个项目,可以在http://repository.atlassian.com/atlassian-jira-rpc-plugin/jars/中下载插件并且放入JIRA发布包的WEB-INF/lib中。
参考文章:http://confluence.atlassian.com/display/JIRA/Enabling+the+RPC+plugin
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
JiraRMI 是一个 JIRA 的插件,用来提供可通过 Java RMI 远程方法调用方式来访问 JIRA 的一些功能,类似于 JIRA RPC (SOAP) 插件,提供更高效和丰富的功能。
主页:http://sourceforge.net/projects/jirarmi/
下载:http://sourceforge.net/projects/jirarmi/files/
来自:http://www.linuxdiyf.com/viewarticle.php?id=310266
参考调用:http://www.cnblogs.com/likwo/archive/2009/12/21/1629221.html
http://zhb1208.iteye.com/blog/761918
2.继续是左侧栏: 'System' -> 'Plugins' ,插件管理找到 'RPC JIRA Plugins' ,确保 'System SOAP Services' 及 'System XML-RPC Services' 处于可用状态。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在使用Mylyn连接JIRA的时候发现一个错误,大概意思是JIRA的RPC服务未开启。
以下提供JIRA开启RPC的方法,方法很简单:
1. 进入JIRA管理的页面,在左侧栏中找到:'Global Settings' -> 'General Configuration' ,将右侧的 'Option' 中的 'Accept remote API calls' 设为 'ON'
2. 继续是左侧栏: 'System' -> 'Plugins' ,找到 'RPC JIRA Plugins' ,确保 'System SOAP Services' 及 'System XML-RPC Services' 处于可用状态。
这是Mylyn已经可以连接JIRA了。
提示:
如果在第二步中没有找到对应的两个项目,可以在http://repository.atlassian.com/atlassian-jira-rpc-plugin/jars/中下载插件并且放入JIRA发布包的WEB-INF/lib中。
参考文章:http://confluence.atlassian.com/display/JIRA/Enabling+the+RPC+plugin
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
JiraRMI 是一个 JIRA 的插件,用来提供可通过 Java RMI 远程方法调用方式来访问 JIRA 的一些功能,类似于 JIRA RPC (SOAP) 插件,提供更高效和丰富的功能。
主页:http://sourceforge.net/projects/jirarmi/
下载:http://sourceforge.net/projects/jirarmi/files/
来自:http://www.linuxdiyf.com/viewarticle.php?id=310266
参考调用:http://www.cnblogs.com/likwo/archive/2009/12/21/1629221.html
http://zhb1208.iteye.com/blog/761918
Zend Optimizer 源代码开源
年前 Zend 公司称有意将 Zend Optimizer 开源(详情),而 Zend 已经将源码提交到 Github 上,网址是
https://github.com/zend-dev/ZendOptimizerPlus/
目前正在开发阶段的 PHP 5.5 将集成 Zend Optimizer+。
这个消息是由 Zend 公司的 CTO Zeev Suraski 宣布的。Zend Optimizer+ 是代码缓存优化工具,以前是收费产品 Zend Server 的一部分,最近开源了。通过对 PHP 文件生成的字节码的优化,Zend Optimizer+ 能提高解释器的性能。同时,它也能在共享的内存中保存预编译的字节码。
年前 Zend 公司称有意将 Zend Optimizer 开源(详情),而 Zend 已经将源码提交到 Github 上,网址是
https://github.com/zend-dev/ZendOptimizerPlus/
目前正在开发阶段的 PHP 5.5 将集成 Zend Optimizer+。
这个消息是由 Zend 公司的 CTO Zeev Suraski 宣布的。Zend Optimizer+ 是代码缓存优化工具,以前是收费产品 Zend Server 的一部分,最近开源了。通过对 PHP 文件生成的字节码的优化,Zend Optimizer+ 能提高解释器的性能。同时,它也能在共享的内存中保存预编译的字节码。
HTTP断点续传的基本原理
断点续传是我们现在经常接触的概念,那么HTTP协议是如何支持断点续传的呢。我们先从一个例子来看看。
下面是一个断点续传的例子:(使用Net Vampire得到)
I 01-7-12 19:19:23 ------------------------- Attempt 1 -------------------------
P 01-7-12 19:19:24 Connecting to 127.0.0.3 ...
P 01-7-12 19:19:24 Connected to 127.0.0.3 [127.0.0.3]
S 01-7-12 19:19:24 GET /VS0515AI.EXE HTTP/1.1
S 01-7-12 19:19:24 Connection: close
S 01-7-12 19:19:24 Host: 127.0.0.3
S 01-7-12 19:19:24 Accept: */*
S 01-7-12 19:19:24 Pragma: no-cache
S 01-7-12 19:19:24 Cache-Control: no-cache
S 01-7-12 19:19:24 Referer: http://127.0.0.3/
S 01-7-12 19:19:24 User-Agent: Mozilla/4.04 [en] (Win95; I ;Nav)
S 01-7-12 19:19:24
R 01-7-12 19:19:24 HTTP/1.1 200 OK
R 01-7-12 19:19:24 Server: Zero Http Server/1.0
R 01-7-12 19:19:24 Date: Thu, 12 Jul 2001 11:19:24 GMT
R 01-7-12 19:19:24 Cache-Control: no-cache
R 01-7-12 19:19:24 Last-Modified: Tue, 30 Jan 2001 13:11:30 GMT
R 01-7-12 19:19:24 Content-Type: application/octet-stream
R 01-7-12 19:19:24 Content-Length: 15143086
R 01-7-12 19:19:24 Connection: close
R 01-7-12 19:19:24
P 01-7-12 19:19:25 Data transfer started
I 01-7-12 19:19:32 Job Stopped by user
I 01-7-12 19:19:33 Received 5 275 648 bytes in 0:00:07 (691 435 bytes/s)
I 01-7-12 19:19:40 ------------------------- Attempt 2 -------------------------
P 01-7-12 19:19:40 Connecting to 127.0.0.3 ...
P 01-7-12 19:19:40 Connected to 127.0.0.3 [127.0.0.3]
S 01-7-12 19:19:40 GET /VS0515AI.EXE HTTP/1.1
S 01-7-12 19:19:40 Connection: close
S 01-7-12 19:19:40 Host: 127.0.0.3
S 01-7-12 19:19:40 Accept: */*
S 01-7-12 19:19:40 Pragma: no-cache
S 01-7-12 19:19:40 Cache-Control: no-cache
S 01-7-12 19:19:40 Referer: http://127.0.0.3/
S 01-7-12 19:19:40 User-Agent: Mozilla/4.04 [en] (Win95; I ;Nav)
S 01-7-12 19:19:40 Range: bytes=5275648-
S 01-7-12 19:19:40
R 01-7-12 19:19:40 HTTP/1.1 206 Partial Content
R 01-7-12 19:19:40 Server: Zero Http Server/1.0
R 01-7-12 19:19:40 Date: Thu, 12 Jul 2001 11:19:40 GMT
R 01-7-12 19:19:40 Cache-Control: no-cache
R 01-7-12 19:19:40 Last-Modified: Tue, 30 Jan 2001 13:11:30 GMT
R 01-7-12 19:19:40 Content-Type: application/octet-stream
R 01-7-12 19:19:40 Content-Range: bytes 5275648-15143085/15143086
R 01-7-12 19:19:40 Content-Length: 9867438
R 01-7-12 19:19:40 Connection: close
R 01-7-12 19:19:40
P 01-7-12 19:19:40 Data transfer started
I 01-7-12 19:19:41 Job Stopped by user
I 01-7-12 19:19:41 Received 1 124 756 bytes in 0:00:01 (969 617 bytes/s)
第一次是普通的传输;第二次由于没有传完全,就发出了Range这个头部,从5275648字节开始传输(默认是按字节算),回应使用206状态值,表示现在开始部分传输,回复Content-Length头部,表示传输的部分,用字节记,然后就与普通传输没有区别了。
来自:http://blog.csdn.net/sendy888/article/details/1719105
c语言实现HTTP断点续传:
断点续传大致分了三个步骤。
1、寻找文件已经下载到的指针位置。
long FileLocate(char* path) /*传入文件位置,返回值为0,则为需要新建下载,大于0则续传 */
{
FILE *fp; long last;
if((fp=fopen(path,"ab+"))==NULL)
{
printf("can not open %s\n",path);
return 0;
}
else
{
fseek(fp,0L,SEEK_END);
last=ftell(fp);
fclose(fp);
return last;
}
}
这里唯一要注意的就是打开方式,不要用wb打开,这样会清空前面已经下载好的数据,而且下载完成后文件的大小是正确的,但是文件数据前端就会丢失掉。
2、将文件下载的位置传输到header里面。
header里面有这个参数 Range,通过设置这个参数可以让服务器给你返回你文件指定位置的数据
Range:bytes=512000- 这个意思就是从 512000这个位置开始下载。
服务器正常返回的状态码再此时就应该是:206
还有就是把你要下载的文件的指针位置设置成要传输的位置,然后就开始准备下了。
3、从服务器返回的body里面读取数据,将读出来的数据写入到续传的那个文件中就可以了。
也希望有兴趣的朋友一块来探讨
来自:http://alloxa.blog.51cto.com/1427286/412451
背景:Lua在游戏行业比较火,不少公司在用它。
最近公司在考虑做openapi的proxy服务器,公司主营网游,旗下多款游戏的用户登陆,充值等等有很多接口,想聚合分散的接口统一走一个通道,所以都要走这上面,压力不小。
在语言和平台上主要在nodejs和ngx_lua中选择,当然最后还是选择了ngx_lua放弃了nodejs的方案,主要原因:
1、主要考虑公司会nodejs的人貌似就我一个,会累死我的
2、对于ngx的运维和配置相对比nodejs来说更加熟悉和有经验
3、从各种性能测试来说ngx_lua似乎在CPU和内存上更胜一筹
我在研究一阵子ngx_lua之后发现lua语法和js真的很像,同时ngx_lua模型也是单线程的异步的事件驱动的,工作原理和nodejs相同,代码甚至比nodejs的异步回调更好写一些。
性能测试,100并发
php:17400
nodejs:31197
ngx_lua:32628
单纯做http代理服务器加上一些简单的逻辑,似乎ngx_lua的方案更加合适,同时ngx_lua还支持redis、mysql等数据库的支持。
最后附上PHP vs Node.js vs Nginx-Lua性能测试,转载的
http://bluehua.org/demo/php.node.lua.html
最近公司在考虑做openapi的proxy服务器,公司主营网游,旗下多款游戏的用户登陆,充值等等有很多接口,想聚合分散的接口统一走一个通道,所以都要走这上面,压力不小。
在语言和平台上主要在nodejs和ngx_lua中选择,当然最后还是选择了ngx_lua放弃了nodejs的方案,主要原因:
1、主要考虑公司会nodejs的人貌似就我一个,会累死我的
2、对于ngx的运维和配置相对比nodejs来说更加熟悉和有经验
3、从各种性能测试来说ngx_lua似乎在CPU和内存上更胜一筹
我在研究一阵子ngx_lua之后发现lua语法和js真的很像,同时ngx_lua模型也是单线程的异步的事件驱动的,工作原理和nodejs相同,代码甚至比nodejs的异步回调更好写一些。
性能测试,100并发
php:17400
nodejs:31197
ngx_lua:32628
单纯做http代理服务器加上一些简单的逻辑,似乎ngx_lua的方案更加合适,同时ngx_lua还支持redis、mysql等数据库的支持。
最后附上PHP vs Node.js vs Nginx-Lua性能测试,转载的
http://bluehua.org/demo/php.node.lua.html
df -hT
-T, --print-type print file system type
-h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G)
-H, --si likewise, but use powers of 1000 not 1024
一、看分区的格式:
root@192.168.137.159:~# df -hT
文件系统 类型 容量 已用 可用 已用%% 挂载点
/dev/mapper/VolGroup-lv_root
ext4 29G 23G 4.0G 86% /
tmpfs tmpfs 250M 0 250M 0% /dev/shm
/dev/sda1 ext4 485M 38M 422M 9% /boot
.host:/ vmhgfs 100G 94G 5.6G 95% /mnt/hgfs
.host:/ vmhgfs 100G 94G 5.6G 95% /mnt/hgfs
二、加上-H显示用了多少:
[root@ZWCLC6X-7198 /]# df -hTH
文件系统 类型 容量 已用 可用 已用%% 挂载点
/dev/sda3 ext4 15G 3.2G 11G 24% /
tmpfs tmpfs 3.1G 0 3.1G 0% /dev/shm
/dev/sda1 ext4 529M 45M 457M 9% /boot
/dev/sdb ext4 101G 197M 96G 1% /data
三、ext4减少inode,mkfs.ext4格式化大容量磁盘:
减小inode总数,可以减小inode占用的磁盘空间,减少磁盘浪费。
例如:指定1m空间分配一个inode来格式化2TB磁盘
mkfs.ext4 -i 1048576 -n /dev/sdc #1024*1024=1048576
mkfs.ext4有参数-i,可以指定:多大磁盘空间分配一个inode
man mkfs.ext4
-i bytes-per-inode
Specify the bytes/inode ratio.
mke2fs creates an inode for every bytes-per-inode bytes of space on the disk.
The larger the bytes-per-inode ratio, the fewer inodes will be created.
This value generally shouldn’t be smaller than the blocksize of the filesystem,
since in that case more inodes would be made than can ever be used.
Be warned that it is not possible to expand
the number of inodes on a filesystem after it is created,
so be careful deciding the correct value for this parameter.
From:https://www.cnblogs.com/micmouse521/p/8064568.html
-T, --print-type print file system type
-h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G)
-H, --si likewise, but use powers of 1000 not 1024
一、看分区的格式:
root@192.168.137.159:~# df -hT
文件系统 类型 容量 已用 可用 已用%% 挂载点
/dev/mapper/VolGroup-lv_root
ext4 29G 23G 4.0G 86% /
tmpfs tmpfs 250M 0 250M 0% /dev/shm
/dev/sda1 ext4 485M 38M 422M 9% /boot
.host:/ vmhgfs 100G 94G 5.6G 95% /mnt/hgfs
.host:/ vmhgfs 100G 94G 5.6G 95% /mnt/hgfs
二、加上-H显示用了多少:
[root@ZWCLC6X-7198 /]# df -hTH
文件系统 类型 容量 已用 可用 已用%% 挂载点
/dev/sda3 ext4 15G 3.2G 11G 24% /
tmpfs tmpfs 3.1G 0 3.1G 0% /dev/shm
/dev/sda1 ext4 529M 45M 457M 9% /boot
/dev/sdb ext4 101G 197M 96G 1% /data
三、ext4减少inode,mkfs.ext4格式化大容量磁盘:
减小inode总数,可以减小inode占用的磁盘空间,减少磁盘浪费。
例如:指定1m空间分配一个inode来格式化2TB磁盘
mkfs.ext4 -i 1048576 -n /dev/sdc #1024*1024=1048576
mkfs.ext4有参数-i,可以指定:多大磁盘空间分配一个inode
man mkfs.ext4
-i bytes-per-inode
Specify the bytes/inode ratio.
mke2fs creates an inode for every bytes-per-inode bytes of space on the disk.
The larger the bytes-per-inode ratio, the fewer inodes will be created.
This value generally shouldn’t be smaller than the blocksize of the filesystem,
since in that case more inodes would be made than can ever be used.
Be warned that it is not possible to expand
the number of inodes on a filesystem after it is created,
so be careful deciding the correct value for this parameter.
From:https://www.cnblogs.com/micmouse521/p/8064568.html
LAMP或LNMP一键安装包
Php/Js/Shell/Go jackxiang 2013-4-13 13:27
网上有很多LNMP/LAMP一键安装脚本,编译安装参数还要修改脚本,此脚本整合了LAMP和LNMP,在任何一台有网络的Red hat 或者centos 服务器上自动配置LNMP或者LAMP,用户可以自定义编译参数也可以使用此脚本默认的参数编译安装。还可以单独安装mysql、nginx、apache、php。
使用方法:将下面代码保存一个文件,例如inst_lanmp.sh 上传到服务器上执行。
此脚本在CentOS 6.0 X864环境下通过:使用效果如下:
代码如下:阅读全文
使用方法:将下面代码保存一个文件,例如inst_lanmp.sh 上传到服务器上执行。
此脚本在CentOS 6.0 X864环境下通过:使用效果如下:
代码如下:阅读全文
洋葱路由(Onion Routing)是在一个计算机网络上的匿名通信技术,由David Goldschlag, Michael Reed, 和 PaulSyverson发展。洋葱路由(OR)的目标是保护一条信息发送者和接受者的隐私,同时当它在网络中转换时也提供对信息内容的保护。洋葱路由根据Chaum的混合瀑布原理完成这个:信息从源地出发经过一个代理序列(洋葱路由器)到达目的地,当重路由信息在一个不可预知的路径时。为了保护敌手偷听信息内容,信息被在路由器之间加密。洋葱路由的优点(一般是混合串联)是不必要去相信每个合作路由器;如果一个或多个路由器是不安全的、匿名通信仍然可以被完成。
Linux下windows都有:黑客x档案2011年1月刊。
Linux下windows都有:黑客x档案2011年1月刊。
[非常实用]简单的Mysql数据库搬家
Php/Js/Shell/Go jackxiang 2013-4-12 22:14
方法一:
一般个人Blog博客难免会碰到要搬家或者换空间的事情,Blog搬家其实是件非常简单的事情,可能你没搬过空间,如果你安装这个方法搬空间,你会觉得Blog搬家没想象那么难。
Blog博客搬家最主要的就两点,一个是网站的文件,一个是网站的数据,那么Blog换空间只要搞定这两步就OK了,现在就开始搬家。
第一步:把Blog原来的所以文件全部下载到本地,通过FTP或者登录空间进行在线下载都可以;
第二步:把下载好的文件全部文件全部上传到新空间制定文件夹;
第三步:下载原来数据库,进入旧网站的phpmyadmin管理界面下载全部的数据,方法是登录phpmyadmin,点击数据库,会出现一个界面,如图:
选择全部,然后把所以的数据导出到本地,保存成.sql格式,保存到本地后是个txt格式,如下图:
第四步:下载好之后,登录新空间的phpmyadmin数据库管理界面,把刚才下载好的.sql导入到新的数据库;
第五步:把网站的ip解析到新的空间上,这样Blog搬家就搞定了。
网络上关于Blog博客搬家的教程很多,基本上所以的搬家方法都是按照这样的做,只要空间没问题的话,一般不会出问题,如果出问题的话,按照个Blog搬家方法一定可以,祝你搬家成功。
方法二:
使用phpmyadmin同步功能迁移mysql数据库:
估计很多人都有在用,但是可能很多人都没有注意到phpmyadmin的同步功能。
其实这个同步功能非常简单、好用,可以实现单个数据表或整个数据库的同步功能,非常不错哦。
首先,需要登录phpmyadmin,然后在页面右上角找到“同步”,接下来,同步页面中会显示数据库和目标数据库,需要设置一下源数据库的IP、用户名及密码,然后选择一下本地数据库名称。这里注意一点,源数据库指的是你要导出的数据库,目标数据库指的是你要导入的数据库,所以,源数据库要选择“远程服务器”,目标数据库就要选择“当前服务器”了。配置好源数据库和目标数据库后,点击右下角的“执行”。一般来说,从源数据库同步到目标数据库,是不需要在目标数据库建表的,phpmyadmin的同步功能会自动建立数据表,所以我们只需要建立数据库就可以了,不需要其他设置、操作。
然后再点击右下角的“同步数据库”。如果当前目标数据库中存在数据,先勾选左下角的“你希望删除当前目标表中的所有数据吗?”-> 再点击右边“应用选中的修改”之后再选择“同步数据库”。
OK,接下来就等着吧,完成之后会有相应提示“已根据源数据库同步目标数据库”
注意:同步功能默认只有localhost,不能修改,这里需要在 config.inc.php里添加一个参数:
$cfg['AllowArbitraryServer'] = true;
这样就可以输入目标地址了。
转载请说明来自:jackxiang.com网站。
一般个人Blog博客难免会碰到要搬家或者换空间的事情,Blog搬家其实是件非常简单的事情,可能你没搬过空间,如果你安装这个方法搬空间,你会觉得Blog搬家没想象那么难。
Blog博客搬家最主要的就两点,一个是网站的文件,一个是网站的数据,那么Blog换空间只要搞定这两步就OK了,现在就开始搬家。
第一步:把Blog原来的所以文件全部下载到本地,通过FTP或者登录空间进行在线下载都可以;
第二步:把下载好的文件全部文件全部上传到新空间制定文件夹;
第三步:下载原来数据库,进入旧网站的phpmyadmin管理界面下载全部的数据,方法是登录phpmyadmin,点击数据库,会出现一个界面,如图:
选择全部,然后把所以的数据导出到本地,保存成.sql格式,保存到本地后是个txt格式,如下图:
第四步:下载好之后,登录新空间的phpmyadmin数据库管理界面,把刚才下载好的.sql导入到新的数据库;
第五步:把网站的ip解析到新的空间上,这样Blog搬家就搞定了。
网络上关于Blog博客搬家的教程很多,基本上所以的搬家方法都是按照这样的做,只要空间没问题的话,一般不会出问题,如果出问题的话,按照个Blog搬家方法一定可以,祝你搬家成功。
方法二:
使用phpmyadmin同步功能迁移mysql数据库:
估计很多人都有在用,但是可能很多人都没有注意到phpmyadmin的同步功能。
其实这个同步功能非常简单、好用,可以实现单个数据表或整个数据库的同步功能,非常不错哦。
首先,需要登录phpmyadmin,然后在页面右上角找到“同步”,接下来,同步页面中会显示数据库和目标数据库,需要设置一下源数据库的IP、用户名及密码,然后选择一下本地数据库名称。这里注意一点,源数据库指的是你要导出的数据库,目标数据库指的是你要导入的数据库,所以,源数据库要选择“远程服务器”,目标数据库就要选择“当前服务器”了。配置好源数据库和目标数据库后,点击右下角的“执行”。一般来说,从源数据库同步到目标数据库,是不需要在目标数据库建表的,phpmyadmin的同步功能会自动建立数据表,所以我们只需要建立数据库就可以了,不需要其他设置、操作。
然后再点击右下角的“同步数据库”。如果当前目标数据库中存在数据,先勾选左下角的“你希望删除当前目标表中的所有数据吗?”-> 再点击右边“应用选中的修改”之后再选择“同步数据库”。
OK,接下来就等着吧,完成之后会有相应提示“已根据源数据库同步目标数据库”
注意:同步功能默认只有localhost,不能修改,这里需要在 config.inc.php里添加一个参数:
$cfg['AllowArbitraryServer'] = true;
这样就可以输入目标地址了。
转载请说明来自:jackxiang.com网站。
wso 一个强大的php webshell
Php/Js/Shell/Go jackxiang 2013-4-12 22:04
WSO是一个PHP shell后门,提供了一个接口,用于各种远程操作。它可以从远程执行代码,执行一切暴力破解的服务器,提供服务器信息,等等。
DownLoad:
http://www.unhonker.com/wp-content/uploads/2012/12/wso2.5.1.zip
来自:http://www.unhonker.com/information/835.html
DownLoad:
http://www.unhonker.com/wp-content/uploads/2012/12/wso2.5.1.zip
来自:http://www.unhonker.com/information/835.html
有时间可以看一下:
Nginx开发从入门到精通:
http://tengine.taobao.org/book/
nginx模块开发篇:
http://tengine.taobao.org/book/module_development.html
Nginx开发从入门到精通:
http://tengine.taobao.org/book/
nginx模块开发篇:
http://tengine.taobao.org/book/module_development.html
[PHP开发] stream_socket_client最多开多少个socket
Php/Js/Shell/Go jackxiang 2013-4-12 09:40
当有人想要实现并发功能时,他们通常会想到用fork或者spawn threads,但是当他们发现php不支持多线程的时候,大概会转换思路去用一些不够好的语言,比如perl。
其实的是大多数情况下,你大可不必使用fork或者线程,并且你会得到比用fork或thread更好的性能。
它运行的很好,但是在fsockopen()分析完hostname并且建立一个成功的连接(或者延时$timeout秒)之前,扩充这段代码来管理大量服务器将耗费很长时间。
因此我们必须放弃这段代码;我们可以建立异步连接-不需要等待fsockopen返回连接状态。PHP仍然需要解析hostname(所以直接使用ip更加明智),不过将在打开一个连接之后立刻返回,继而我们就可以连接下一台服务器。
PHP5中可以使用新增的stream_socket_client()函数直接替换掉fsocketopen()。PHP5之前的版本,你需要自己动手,用sockets扩展解决问题。
php中stream_socket_client的多路复用采集网站数据,同时开多少个比较合适呢,要求在最短时间内采集最多数据:
其实的是大多数情况下,你大可不必使用fork或者线程,并且你会得到比用fork或thread更好的性能。
它运行的很好,但是在fsockopen()分析完hostname并且建立一个成功的连接(或者延时$timeout秒)之前,扩充这段代码来管理大量服务器将耗费很长时间。
因此我们必须放弃这段代码;我们可以建立异步连接-不需要等待fsockopen返回连接状态。PHP仍然需要解析hostname(所以直接使用ip更加明智),不过将在打开一个连接之后立刻返回,继而我们就可以连接下一台服务器。
PHP5中可以使用新增的stream_socket_client()函数直接替换掉fsocketopen()。PHP5之前的版本,你需要自己动手,用sockets扩展解决问题。
php中stream_socket_client的多路复用采集网站数据,同时开多少个比较合适呢,要求在最短时间内采集最多数据:
php socket通信(tcp/udp)
Php/Js/Shell/Go jackxiang 2013-4-12 09:38
断点续传的原理,PHP断点续传 HTTP学习笔记。
Php/Js/Shell/Go jackxiang 2013-4-11 12:12
打造nginx为高效的上传附件服务器:(对立面的逻辑做了修改,好像是不用PHP来处理了)
http://hi.baidu.com/hackers365/item/ddaa0d2f91cc4886ae48f571
作者微博客:http://t.lava.cn/w/23651 下载地址也在立面。 2013-04-14 15:15:00
hack掉nginx_http_upload模块,添加了一个新的变量upload_file_md5_last。此变量可以得到最后一个文件的md5值。。。在这个问题上绊了两三个星期。昨天搞到十一点多。还是无果。今天早上给老婆发誓。今天整不好。晚上不睡觉。。。终于在最后一刻搞定了。。。耶。可以睡觉了。。
详细:
在ngx_http_upload的模块变量upload_file_md5的get_handler里。它是每次动态生成的。。只有第一次使用的时候是正确的值。以后每次使用。get_handler里都会改变。。得不到正确的值。。所以。我就给它添加了一个变量upload_file_md5_last可以得到最后一个文件md5值。。。好了。可以继续下面未完成的工作了。
附件是修改之后的ngx_upload模块。
阅读全文
http://hi.baidu.com/hackers365/item/ddaa0d2f91cc4886ae48f571
作者微博客:http://t.lava.cn/w/23651 下载地址也在立面。 2013-04-14 15:15:00
hack掉nginx_http_upload模块,添加了一个新的变量upload_file_md5_last。此变量可以得到最后一个文件的md5值。。。在这个问题上绊了两三个星期。昨天搞到十一点多。还是无果。今天早上给老婆发誓。今天整不好。晚上不睡觉。。。终于在最后一刻搞定了。。。耶。可以睡觉了。。
详细:
在ngx_http_upload的模块变量upload_file_md5的get_handler里。它是每次动态生成的。。只有第一次使用的时候是正确的值。以后每次使用。get_handler里都会改变。。得不到正确的值。。所以。我就给它添加了一个变量upload_file_md5_last可以得到最后一个文件md5值。。。好了。可以继续下面未完成的工作了。
附件是修改之后的ngx_upload模块。
阅读全文