お客様に 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