让PHP更快的提供文件下载
一般来说, 我们可以通过直接让 URL 指向一个位于 Document Root 下面的文件, 来引导用户下载文件. 但是, 这样做, 就没办法做一些统计, 权限检查, 等等的工作. 于是, 很多时候, 我们采用让 PHP 来做转发, 为用户提供文件下载. ...
一般来说, 我们可以通过直接让 URL 指向一个位于 Document Root 下面的文件, 来引导用户下载文件. 但是, 这样做, 就没办法做一些统计, 权限检查, 等等的工作. 于是, 很多时候, 我们采用让 PHP 来做转发, 为用户提供文件下载. ...
要判断客户端是否使用代理服务器,可以从客户端所发送的环境变量信息来判断。 具体来说,就是看 HTTP_VIA 字段,如果这个字段设置了,说明客户端使用了代理服务器。 匿名级别可以参考下表来判断。 给出一个应用例子,可以挂上代理试试效果: http://ip.mixsec.org/ 一、没有使用代理服务器的情况: REMOTE_ADDR = 您的 IP HTTP_VIA = 没数值或不显示 HTTP_X_FORWARDED_FOR = 没数值或不显示 二、使用透明代理服务器的情况:Transparent Proxies REMOTE_ADDR = 代理服务器 IP HTTP_VIA = 代理服务器 IP (补充:这个字段由代理服务器填充,有时会填充网关信息等) HTTP_X_FORWARDED_FOR = 您的真实 IP 这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。 三、使用普通匿名代理服务器的情况:Anonymous Proxies REMOTE_ADDR = 代理服务器 IP HTTP_VIA = 代理服务器 IP (补充:这个字段由代理服务器填充,有时会填充网关信息等) HTTP_X_FORWARDED_FOR = 代理服务器 IP 隐藏了您的真实 IP,但是向访问对象透露了您是使用代理服务器访问他们的。 四、使用欺骗性代理服务器的情况:Distorting Proxies REMOTE_ADDR = 代理服务器 IP HTTP_VIA = 代理服务器 IP (补充:这个字段由代理服务器填充,有时会填充网关信息等) HTTP_X_FORWARDED_FOR = 随机的 IP 告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机 IP 代替您的真实 IP 欺骗它。 五、使用高匿名代理服务器的情况:High Anonymity Proxies REMOTE_ADDR = 代理服务器 IP HTTP_VIA = 没数值或不显示 HTTP_X_FORWARDED_FOR = 没数值或不显示 完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象。 除此之外,可以通过 proxy judges 总 结其他一些可供参考的判定信息,一遍于在实践中加以利用。 最后写一个 php 例子,仅供大家参考: ...
今天在使用 70 的 google_code_svn 插件时,发现一个问题: 明明我的 vps 已经开启了 curl ,但是始终提示 对不起, 您的主机不支持 php-curl 扩展而且没有打开 allow_url_fopen 功能, 无法正常使用此功能 本地测试好着,放服务器上就出问题了。 ...
vi /etc/ssh/sshd_config 找到 1# What ports, IPs and protocols we listen for 2Port 22 修改为自己的 端口号即可 1:wq 保存、退出 /etc/init.d/ssh restart
1function getRandStr($n=6){ 2 $str = ""; 3 for( $i=0; $i<$n; $i++ ){ 4 $case = rand(0, 2); 5 switch($case){ 6 case 0: 7 /* ASCII 97-122 a-z */ 8 $str .= chr(rand(97, 122)) ; 9 break; 10 case 1: 11 /* ASCII 65-90 A-Z */ 12 $str .= chr(rand(65, 90)) ; 13 break; 14 case 2: 15 /* ASCII 48-57 0-9 */ 16 $str .= chr(rand(48, 57)) ; 17 break; 18 } 19 } 20 return $str; 21} 22 23echo getRandStr(32);
好久没打理过博客了,一个字,忙!最近终于有点时间了,但是发现自己还是闲不下来,各种折腾。。。 背景: 刚好最近要给泰山大人做个博客,不用说,程序肯定 typecho,但是皮肤得自己弄。在做皮肤时,看到论坛里面好像有人要播放器,就随手写了这个 BaiduBox 插件。 ...
安装方法 1wget -c http://mrasong.com/attachment/2012/05/subversion-1.6.18.sh && chmod +x subversion-1.6.18.sh && ./subversion-1.6.18.sh 下载:subversion-1.6.18.sh 使用方法 1/etc/init.d/subversion {start|stop|restart|reload} 修改配置 /home/data/svn/main/conf/svnserve.conf 1[general] 2### 匿名访问 3anon-access = none 4# auth-access = write 5 6### 用户文件 7password-db = passwd 8 9### 权限文件 10authz-db = authz 11 12### svn 名称 13realm = MY SVN 14 15[sasl] 16### 这些可以默认 17# use-sasl = true 18# min-encryption = 0 19# max-encryption = 256 添加用户 /home/data/svn/conf/passwd ...
1/** 2 * 博客、文章访问量缓存 3 * useage: makeCount(int 博客ID [, int 文章ID [, int 更新间隔(1800s) [, int 博客访问量 [, int 文章访问量]]]] ) 4 * @author MrAsong 2012-04-26 5 */ 6function makeCount($bid=1, $pid=0, $update_interval=1800, $num_home=50, $num_post=15){ 7 global $wpdb; 8 9 $count_file = ABSPATH . 'cache/blogcount_'.$bid.'.js' ; 10 11 if( $json = @file_get_contents($count_file) ){ 12 $c = json_decode($json,true); //获取数据 13 }else{ //如果不存在,创建count文件 14 $c = array( 15 'create' => time(), //上次更新时间 16 'blogcount' => 0 17 ); 18 } 19 20 if( $pid == 0 ){ // 判断是否为首页 21 $c['blogcount'] = $c['blogcount'] + 1 ; //count+1 22 23 if( $c['blogcount'] >= $num_home && (time()-$c['create']) > $update_interval ){//更新博客访问量 24 $sql = "UPDATE $wpdb->blogs SET count=count+{$c['blogcount']} WHERE blog_id=$bid"; 25 $wpdb->query($sql); 26 $c['create'] = time(); 27 $c['blogcount'] = 0; 28 } 29 }else{ 30 $c['post'][$pid]['c'] = isset($c['post'][$pid]['c']) ? ($c['post'][$pid]['c'] + 1) : 1 ; 31 $c['post'][$pid]['t'] = isset($c['post'][$pid]['t']) ? $c['post'][$pid]['t'] : time(); 32 if( $c['post'][$pid]['c'] >= $num_post && (time()-$c['post'][$pid]['t']) > $update_interval ){//更新博客访问量 33 $sql = "UPDATE $wpdb->posts SET count=count+{$c['post'][$pid]} WHERE ID=$pid"; 34 $wpdb->query($sql); 35 unset($c['post'][$pid]); //删除此元组 36 } 37 } 38 39 if($fp = @fopen($count_file, 'wb')) { 40 @fwrite( $fp, json_encode($c) );//写入json 41 fclose($fp); 42 } 43 44}
分享下昨天想到的一个 jquery 标题循环滚动效果 只是一个思想,可以在此基础上自己改造下。 1<div> 2 <ul id="last_activities"> 3 <li>title.11111</li> 4 <li>title.22222</li> 5 <li>title.33333</li> 6 <li>title.44444</li> 7 </ul> 8</div> 9<script 10 type="text/javascript" 11 src="http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js" 12></script> 13<script type="text/javascript"> 14 function scroll() { 15 var tmp = $("#last_activities").find("li").first(); 16 tmp.remove(); 17 $("#last_activities").find("li").first().hide().fadeIn("slow"); 18 $("#last_activities").append(tmp); 19 //$("#last_activities").find("li").first().hide('300'); 20 } 21 $(function () { 22 setInterval("scroll()", 3500); 23 }); 24</script>
用 wsdl 文件 服务端 1class service 2{ 3 public function HelloWorld() 4 { 5 return "Hello"; 6 } 7 public function Add($a,$b) 8 { 9 return $a+$b; 10 } 11} 12$server=new SoapServer('soap.wsdl',array('soap_version' => SOAP_1_2)); 13$server->setClass("service"); 14$server->handle(); 资源描述文件,可以用工具(zend studio)生成。其实就是一个 xml 文件。 ...