一段无阻塞访问远程url的代码

一段无阻塞访问远程服务器url的代码,对一个远程的URL进行类似TOUCH的操作(即向服务器发送请求URL,但并不等待和使用服务器返回的数据),适用于向某个远程URL发送参数、数据的情况。

author:nameless@phpe.net

 
/**
 * Touch a remote url
 * Just do a get opration on a remote url LIKE TOUCH
 * @param string $url The remote url
 * @return boolean
 */
function rtouch($url){

	if (!$url) return false;

	$urls = parse_url($url);
	if ($urls['scheme'] != 'http') return false;

	$fp = fsockopen($urls['host'], 80, $errno, $errstr, 30);

	if ($fp) {
		$uri = (empty($urls['path']) ? '' : $urls['path']) . (empty($urls['query']) ? '' : '?'.$urls['query']) . @(empty($urls['fragment']) ? '' : '#'.$urls['fragment']);
		$out = "GET $uri HTTP/1.1\r\n";
		$out .= "Host: $urls[host]\r\n";
		$out .= "Connection: Close\r\n\r\n";
		fwrite($fp, $out);
		fclose($fp);
		return true;
	}

	return false;
}

//测试代码
if (rtouch('http://www.sina.com.cn')){
	echo '搞定';
else
	echo '搞不定';
exit;
 
/**
 * 这为了测试使用的文件代码,于要实现的功能无关
 * 保存为单独的文件,可以用来接收,测试Touch操作
 **/
 @error_reporting(0);
 @set_time_limit(0);
 @ignore_user_abort(true);
 sleep(10);
 $fp = fopen('output.txt','w');
 fwrite($fp,'完成');
 fclose($fp);
 exit;

(12)

“一段无阻塞访问远程url的代码”的7个回复

  1. 在超越上看了你的帖子,我想可以贡献一下我的一个小类。它可以把当前目录下指定的扩展名文件全部转换成模板标记。
    有兴趣msn我。
    (PS:固然乱七八糟,在BLOG找了半天也没找到email…)

  2. 语义不清:(受影响了)
    它可以把当前目录下指定的扩展名文件全部转换成模板标记。=》它可以把当前目录下指定扩展名的全部文件,实现相对路径和模板标记互换,

发表评论

电子邮件地址不会被公开。