ホームページ  >  記事  >  バックエンド開発  >  お客様がRSSを購読し、定期的に更新する方法

お客様がRSSを購読し、定期的に更新する方法

WBOY
WBOYオリジナル
2016-06-13 13:45:471372ブラウズ

お客様に RSS の購読と定期的な更新をお願いします
お客様がキーワード検索を通じてローカル RSS を購読できる Web サイトを作成していますが、データベースへの呼び出し数を保護するために、数を制限する予定です。顧客からの電話の数。

一般的な考え方は、ユーザーが初めてサブスクライブするときに、データベースが呼び出され、静的 XML ファイルが生成されるということです。 XML の生成時間に基づいて、24 時間ごとに自動的に更新されます。

アイデア 1: ユーザーが XML をリクエストするたびに、time()-filectime に基づいて判断し、それが 24*60*60 より大きい場合は、PHP ファイルを再度実行し、データベースを呼び出し、XML を更新します。ファイル。問題は、静的 XML ファイルが生成された後、XML がどのように PHP ファイルに通知して、「有効期限が切れました。もう一度更新してください」と伝えることができるかということです。

アイデア 2: ユーザー サブスクリプションを SHELL に書き込み、CRON をバックグラウンドで定期的に実行させます。問題は、ユーザーのサブスクリプション数が指数関数的に増加すると、SHELL スクリプトのサイズが増加し続け、扱いにくくなるということです。また、SHELL スクリプトの読み取りと書き込みを同時に行うと、SHELL スクリプトはクラッシュしますか?それとも CRON プログラムをスキップさせますか?

3 つのアイデア: まだ考えていませんが、もっと良い方法があるかもしれません。私に提案してください。ありがとう。


ところで: 個人的な好み: time()-filectime に基づいて判断すると、これにより、最初のサブスクリプション後に消える悪意のあるユーザー (RSS サブスクリプションが放棄される) を除外できますが、CRON プログラムはまだ自動的に生成されます。 24 時間ごとに空きスペース...

-----解決策---------
PHPはxmlの生成時間を読み取って判断することができます。ただし、xml ファイルの数が多い場合は、IO ボトルネックの問題を考慮する必要があります。 それでうまくいかない場合は、生成された時間をデータベースに保存します。作業の調整にはデータベースを使用した方が良いかもしれません

XML がたくさんありますか?多くない場合は、memcache を使用して一致させることができます。
------解決策------------------
それが1階の意味です
ファイルキャッシュです

abcdはmd5にすることができ、一部の特殊文字によるトラブルを防ぐことができます
xmlを入れることができるのでブルートフォースクラッキングは問題ありません。 Web ルート ディレクトリの外では、.htaccess を使用して直接アクセスを制御することもできます

XML ファイルが多すぎると問題が発生します。必要に応じて、長期間更新されていないファイルを定期的に削除できます。

別の: 純粋な XML ファイルの場合、file_get_contents は include


Discussion
ねえ、よく考えたら、これってできるの?すべての RSS 購読は PHP ファイル rss.php?search=abcd

PHP code

$file_name = $_GET['search'].'.xml'; に定義されます。 xml
if(time()-filectime($file_name)>24*60*60){
//データベースにクエリを実行し、新しい XML ファイルを生成して読み取ります
}else{



------解決策------------------ XML の変更時刻は、head メソッドを使用して最終変更時刻を取得することができます。これは、検索エンジンのスパイダーが行うことです。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。