使用sockets:从新闻组中获取文章(三)
2015-01-24信息快讯网
既然我们已经得到了最后一篇文章的文章编号,读取最后的十篇文章就是很容易的事了。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/得到。
Http 1.1 Etag 与 Last-Modified提高php效率
使用ETags减少Web应用带宽和负载第1/2页
使用 eAccelerator加速PHP代码的方法
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
wordpress之wp-settings.php
php中ob(Output Buffer 输出缓冲)函数使用方法
PHP静态新闻列表自动生成代码
phpMyAdmin下载、安装和使用入门教程
一篇入门的php Class 文章
自动生成文章摘要的代码[PHP 版本]
推荐一篇入门级的Class文章
实现了一个PHP5的getter/setter基类的代码
几篇关于无限分类算法的文章第1/5页
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
实例(Smarty+FCKeditor新闻系统)
用文本文件实现的动态实时发布新闻的程序
新闻分类录入、显示系统
同时提取多条新闻中的文本一例
使用sockets:从新闻组中获取文章(一)
PHP+MYSQL的文章管理系统(二)
使用sockets:从新闻组中获取文章(二)
PHP自动更新新闻DIY
多数据表共用一个页的新闻发布
PHP与MySQL交互使用详解
文章推荐系统(三)
推荐文章系统(一)
文章推荐系统(二)
使用无限生命期Session的方法
使用php+xslt在windows平台上
PHP中GET变量的使用
在php中使用sockets:从新闻组中获取文章
使用PHP和XSL stylesheets转换XML文档
vBulletin Forum 2.3.xx SQL Injection
新浪新闻小偷