现在的位置: 首页 > 综合 > 正文

自个儿用

2013年10月15日 ⁄ 综合 ⁄ 共 2150字 ⁄ 字号 评论关闭

fsockopen例子
多进程写文件


反注入
$string = addslashes(htmlspecialchars($string, ENT_QUOTES));
htmlspecialchars_decode()


编码转换:

base64_encode()

字符串

mb_strimwidth($item[3],0,12,"…",'utf-8');//mb_substr();

string strtr ( string str, string from, string to )
string strtr ( string str, array replace_pairs )
eg:

$addr
=
strtr
($addr,""aa"o","aao"
);
$trans
= array("hello"
=> "hi","hi"=>"hello"
);
echo
strtr("hi all, I said hello",$trans
);

当前用户域名:

http://{$_SERVER['HTTP_HOST']}

目录操作:

php获取当前文件所在目录

1. php内置的函数getcwd()可以获得,函数原型:

string getcwd ( void ) 
成功返回当前目录,失败返回false。
例如: echo getcwd();

2. dirname(__FILE__) 

函数原型:
string dirname ( string path )
返回文件所在目录。其中__FILE__是php内置常量,文件的绝对路径。

 

fsockopen

/**
 * 服务端发起一个post请求
 * @param string $apiUrl
 * @param array $fields
 * @return array $response;
 */
function httpRequest($apiUrl,$fields)
{
    $postData=json_encode($fields);

    $referrer="";
    $urlInfo=parse_url($apiUrl);

    if($referrer=="")
    { 
        isset($_SERVER["SCRIPT_URI"]) && $referrer = $_SERVER["SCRIPT_URI"];
    }

    if(!isset($urlInfo["port"]))
    {
        $urlInfo["port"]=80;
    }	
    //构建一个http请求
	$request = '';
    $request.= "POST ".$urlInfo["path"]." HTTP/1.0\n";
    $request.="Host: ".$urlInfo["host"]."\n";
    $request.="Referer: $referrer\n";
    $request.="Content-type: application/json\n";
    $request.="Content-length: ".strlen($postData)."\n";
    $request.="Connection: close\n";
    $request.="\n";
    $request.=$postData."\n";

    //DebugInfo("[fun.httpRequest]-[$request]",4);
    $response='';
    if(!empty($postData))
    {   
        //$startTIme=microtime(true);    
        $fs= fsockopen($urlInfo["host"],$urlInfo["port"]);
        fputs($fs, $request);

        //获取返回结果
        while(!feof($fs)) 
        {    	
            $buffer = fgets($fs, 4096);
            if (substr($buffer,0,4)=='HTTP') {
                list(,$statusCode,)=explode(' ',$buffer);
                $response.=$buffer;
            }  
        }

        //获取json结果集
        if($statusCode=='201')
        {
            $jsonData=$buffer;
        }
        else
        {
            $jsonData='';
        }

        fclose($fs);
       
        $response=array('code'=>$statusCode,'data'=>$jsonData);

    }		   
    return $response;     
}

多进程写文件

/**
 * 多进程写文件
 *
 * @param string $filename 文件路径
 * @param string $content 文件内容
 * @param string $mode 打开模式
 * @return null
 */
function fileWrite($filename, $content, $mode = 'w')
{ 
	$filename_lock = $filename . '.lock'; 
	
	while(1)
	{ 
		if (file_exists($filename_lock))
		{ 
			usleep(500); // 延迟500ms重试
		}
		else
		{ 
			touch($filename_lock); //加锁
			
			$f = fopen($filename, $mode); 
			fwrite($f, $content); 
			fclose($f);
			
			unlink($filename_lock); 
			break; 
		}   
	}
	
	if (file_exists($filename_lock))
	{ 
		unlink($filename_lock); 
	}
}

【上篇】
【下篇】

抱歉!评论已关闭.