使用sockets從新聞組中獲取文章三

讀取文章
既然我們已經得到瞭最後一篇文章的文章編號,讀取最後的十篇文章就是很容易的事瞭。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()的更多信息,請參考 https://www.php.net/manual/function.fclose.php
結論
在上文中,我們看到瞭怎樣打開、使用然後關閉一個socket:連接到一個NNTP服務器,取回一些文章。使用POST命令發表文章也復雜不到哪兒去。
下一步就是編寫一個基於WEB的新聞組客戶端瞭。
存儲這些文章,用某個搜索引擎(比如說https://www.htdig.org)對文章進行索引也是非常容易的。這樣,你有瞭一個基於web的搜索新聞組的程序瞭。
這樣的程序的一個例子可以在https://www.phpindex.com/ng/得到。

發佈留言