1,Webserver (Nginx) :这一层采用分布式部署,结合智能DNS解析可以简易地防止单点故障、实现区域访问加速,结合LVS很容易实现负载均衡。这一层主要是负责处理静态请求和转发PHP请求至第二层的PHP处理节点,对于静态资源地址可以单独拿出来部署,或者直接使用商用的云存储服务(国内七牛,又拍云,国外有Amazon S3)
分类: PHP
-
PHP获取远程图片
…
$path = ‘upload/pic.jpg’; //写入路径、文件
$path_tmp = $path.”_tmp”; //临时写入路径、文件
//写入路径权限设置$realdir = ”;
$file_dir = explode(‘/’,$path);
array_pop($file_dir); //取得路径
foreach ($file_dir as $dir) {
if ( $dir == ” )
continue;
$realdir .= ‘/’ . $dir;
if ( ! is_dir($realdir) ) {
if ( ! mkdir($realdir) ) {
return ”;
}else{
chmod 777 $realdir
;
}
}
}
//获取图片到临时路径、文件
$cmd =wget -q -x -t3 -T5 -O $path_tmp $url
;
if(is_file($path_tmp)){
if(filesize($path_tmp) > 10){//10 byte
mv $path_tmp $path
;
chmod 777 $path
;
}else{
rm $path_tmp
;
}
}
… -
php中如何通过get方法传递带空格的字符串
$sousuo = urlencode($input);
echo “<a href=$PHP_SELF?input=$input>”;用urldecode转回来
$input = urldecode($input);
echo $sousuo;上边$input是带空格的字符串,使用urlencode()这样空格会在传递的时候转成’20%‘,在接收的时候一般会自动转成空格。 -
php中使用jsonp跨域传递内容
我们现在www.test.com这个域名下面有这么个html文件testjsonp.html:<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html xmlns=”http://www.w3.org/1999/xhtml” ><head><title>Untitled Page</title><script type=”text/javascript” src=”jquery-1.7.2.min.js”></script><script type=”text/javascript”>jQuery(document).ready(function(){$.ajax({type: “GET”,async: false,url: “http://test/jsonp.php”,dataType: “jsonp”,jsonp: “callback”,//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)jsonpCallback:”flightHandler”,//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写”?”,jQuery会自动为你处理数据success: function(json){alert(‘您查询到航班信息:票价: ‘ + json.price + ‘ 元,余票: ‘ + json.tickets + ‘ 张。回调函数名为: ‘+json.func);},error: function(){alert(“fail”);}});});</script></head><body></body></html>注意,要真正运行上面的代码可能需要jquery的文件,你可以将<script type=”text/javascript” src=”jquery-1.7.2.min.js”></script>改为你目录中jquery的文件路径:如:<script type=”text/javascript” src=”js/jquery.js”></script>然后,你可以再找个另外一个域名的web目录,将文件jsonp.php:<?php$callback = $_GET[“callback”];$a = array(‘code’=>’CA1998’,‘price’=>’6000’,‘tickets’=>20,‘func’=>$callback,);$result = json_encode($a);echo “flightHandler($result)”;exit;放到这个目录下面去。这样就可以测试了。直接在浏览器访问testjsonp.html.就可以看到效果了。 -
比RBAC更好的权限认证方式(Auth类认证)
Auth 类已经在ThinkPHP代码仓库中存在很久了,但是因为一直没有出过它的教程, 很少人知道它, 它其实比RBAC更方便 。
RBAC是按节点进行认证的,如果要控制比节点更细的权限就有点困难了,比如页面上面的操作按钮, 我想判断用户权限来显示这个按钮, 如果没有权限就不会显示这个按钮; 再比如我想按积分进行权限认证, 积分在0-100时能干什么, 在101-200时能干什么。 这些权限认证用RABC都很困难。
下面介绍 Auth权限认证, 它几乎是全能的, 除了能进行节点认证, 上面说的RABC很难认证的两种情况,它都能实现。 (更多…) -
PHP中使用curl方式抓取网页代码
PHP抓取页面的主要方法: 1. file()函数
2. file_get_contents()函数
3. fopen()->fread()->fclose()模式
4.curl方式
5. fsockopen()函数 socket模式
6. 使用插件(如:http://sourceforge.net/projects/snoopy/) -
php流程控制替代语法
好吧 ……确实是菜到不能再菜了,第一次看到这种语法……还是请教群里热情的人解决问题……o(︶︿︶)o 至少又学到了一点东西。替代语法规则:PHP 提供了一些流程控制的替代语法,包括 if,while,for,foreach 和 switch。替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;,endwhile;,endfor;,endforeach; 以及 endswitch; -
php中heredoc的使用方法
echo <<<STR
echo(‘something’);
STR;
这里的<<<STR和STR;是什么意思呢?1.以<<<End开始标记开始,以End;结束标记结束,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。开始标记和开始标记相同,比如常用大写的EOT、EOD、EOF来表示,但是不只限于那几个,只要保证开始标记和结束标记不在正文中出现即可。