当前位置: 首页 > 图文教程 > 网络编程 > PHP > 使用sockets:从新闻组中获取文章(三)

PHP
一键删除顽固的空文件夹 软件下载
获得Google PR值的PHP代码
解决控件遮挡问题:关于有窗口元素和无窗口元素
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
一个数据采集类
php中的一个中文字符串截取函数
自己前几天写的无限分类类
简单采集了yahoo的一些数据
回答PHPCHINA上的几个问题:URL映射
模拟flock实现文件锁定
一个捕获函数输出的函数
cache_lite试用
再次研究下cache_lite
PHP数据缓存技术
修改了一个很不错的验证码,共享之。
谈谈PHP的输入输出流
使用apache模块rewrite_module (转)
让PHP支持页面回退的两种方法[转]
mysql中存储过程、函数的一些问题

PHP 中的 使用sockets:从新闻组中获取文章(三)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 188 ::
收藏到网摘: n/a

读取文章
既然我们已经得到了最后一篇文章的文章编号,读取最后的十篇文章就是很容易的事了。RFC977中说,ARTICLE命令既可以使用文章编号,也可以使用它的消息ID.
这里要注意,文章编号跟它的消息ID是不同的,因为每个新闻服务器分配自己的文章编号,所以同一篇文章在两个不同的服务器上的编号是不一样的,而文章的消息ID,是包括在文章的头信息里,并且是唯一的。
<?php
$cfgLimit =10;
//upload last articles
$boucle = $last-$cfgLimit;
while ($boucle<=$last) {
set_time_limit(0);
fputs($usenet_handle, "ARTICLE $bouclen");
$article="";
$tmp=fgets($usenet_handle, 4069);
if(substr($tmp,0,3) != "220") {
echo "+----------------------+n";
echo "Error on article $bouclen";
echo "+----------------------+n";
}
else {
while($tmp!=".rn") {
$tmp = fgets($usenet_handle, 4096);
$article .=$tmp;
}
echo "+----------------------+n";
echo "Article $bouclen";
echo "+----------------------+n";
echo "$articlen";
}
$boucle++;
}
?>
我们从服务器的这个新闻组中读取了最后的十篇文章,。也可以通过使用HEAD命令读取文章的头信息,或者使用BODY命令读取文章内容。
关闭连接
最后,通过调用fclose()函数关闭socket,结束同NNTP服务器的对话。
<?php
//close connection
fclose($usenet_handle);
?>
关于fclose()的更多信息,请参考 http://www.php.net/manual/function.fclose.php
结论
在上文中,我们看到了怎样打开、使用然后关闭一个socket:连接到一个NNTP服务器,取回一些文章。使用POST命令发表文章也复杂不到哪儿去。
下一步就是编写一个基于WEB的新闻组客户端了。
存储这些文章,用某个搜索引擎(比如说http://www.htdig.org)对文章进行索引也是非常容易的。这样,你有了一个基于web的搜索新闻组的程序了。
这样的程序的一个例子可以在http://www.phpindex.com/ng/得到。