一段无阻塞访问远程服务器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;

(17)


7 条评论

July · 2006/03/16 5:01 下午

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

July · 2006/03/16 5:05 下午

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

kometo · 2006/03/17 8:56 上午

呵呵,已经给你发信了.

donald · 2009/06/23 12:26 下午

你这个代码复制下来有问题啊,能否给个php文件下载?

kometo · 2009/06/24 1:03 上午

代码我重新排版测试了,你可以再测试下。

oRSwGVy · 2009/11/23 8:30 下午

Hi! OFrdrCTc

淘宝 · 2009/11/24 8:32 下午

好久没有上网了 过来看看

发表评论

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