通知
すべてクリア

解決済みfile_get_contentsとcurlで429 Too Many Requestsが頻発

投稿: 3
 haru
質問投稿者
コミュニティ参加日: 3日前
Wordpressの入っているサイトの片隅でphpを使用して
テンプレートディレクトリに置いてあるtxtファイルをfile_get_contentsをすると
「HTTP/1.1 429 Too Many Requests」が10回に1回くらいの頻度で出てきます。
何かfile_get_contentsの制限など有るのでしょうか…?
 
もし、なにかありましたらご教示のほどをよろしくお願い申し上げます。
 
 
【詳細】
・アクセスログを見ても、自分が動かした時のみしかない
・そのモジュールを動かす頻度は動作確認の手作業なので、読み込めていないなぁ~というときにブラウザの更新ボタンを押すレベルで、連続してでも30秒間隔くらい
・内容は単純に1M以下のテキスト文章
・curlを使用しても同様に429エラーになります
・後にwordpress内のページを参照したいのでfile()の使用は考えていません
 
 
【環境】
・PHP Version 8.2.28
・WordPress 6.8.1(プラグインはMultiBytePatchのみ)
・php.iniはallow_url_fopen=Onです
・サーバー番号sv16151
Xアクセラレータ Ver.1
サーバーキャッシュ  ON(OFFにしてもダメでした)
・ブラウザキャッシュ OFF
・WAF 全部OFF
・日時 2025/07/03 10:00~
 
 
【全ソース(デバッグ用に単純化したものですが、同様にエラーが出ます)】
require_once("wp-load.php");
 
$tmp_dir = get_template_directory_uri();
$filename = $tmp_dir . "/form/count.txt";
$form_html = file_get_contents($filename, false);
 
 
$ret = @file_get_contents($filename, false);
 
if($ret === false){
echo "err";
}else{
echo $ret;
}
 
対象サービス
3件の返信
投稿: 202
コミュニティ参加日: 1年前

「429 Too Many Requests」は通常、「特定のIPアドレスからのHTTPリクエストが過剰に発生したときに返されるエラー」で、エックスサーバーの細かい仕様までは把握していませんが、「リクエスト数のカウント方法」はおそらく、「サーバー契約のなかで発生したリクエストすべて(=今回問題になっているドメイン名以外にもサイトを運営している場合、そちらのアクセスもカウントされる)」だと思います(基本的にこういった制限はサーバー契約単位なので)。

また、PHPプログラムのなかでcurlやfile_get_contentsを実行すると、アクセス元のIPアドレスはたしか、「契約しているサーバー自身のIPアドレス」になります。

 

同じ契約サーバーの中でWordPressサイトを運営している場合、WordPressにどなたかがアクセスしたときにもcurlだかで「wp-cron.php」が実行され、これも「契約しているサーバー自身のIPアドレスからのHTTPリクエスト」にあたりますが、このへんのアクセスが429エラーの原因になっている可能性があるかもしれません。

これが原因の場合、wp-cron.phpを「cronからPHPプログラムを直接指定しての実行」などに移し、curlなどによる「契約サーバー自身のIPアドレスからのHTTPリクエスト」を減らすことで、同じIPアドレスからのリクエスト数に余裕ができ、「429 Too Many Requests」の発生を防げるかもしれません。

 

契約サーバー内のサイトのアクセス状況(特にwp-cron.phpへのアクセスなどの、契約サーバー自身IPアドレスから発生しているアクセス)が7月3日の前後で特に変わっていないということであれば…明確な回答が得られるかはわかりませんが、公式のサポートに問い合わせてみるしかなさそうでしょうか。

エックスサーバーのことではありませんが、ここ1年ぐらい、「AIからの情報収集のための過剰なアクセスでサーバーコストが…」といったニュース記事、ブログ記事などをそれなりの頻度で見かけます。もしかしたらエックスサーバーでも、7月3日ごろに、そういった過剰なアクセスを防ぐために、429 Too Many Requestsが発生するまでのHTTPリクエストの閾値を変更した、といったことがあるかもしれません(あくまでよたばなしです。ぱっと思いついた推測を書いているのみであり、エックスサーバーが実際にそうしたのかはもちろん知りません)。

返信
1件の返信
 haru
コミュニティ参加日: 3日前

投稿: 3

ご回答ありがとうございました。

「リクエスト数のカウントがドメイン内ではなくサーバー契約内の他のドメイン」と「AIの情報収集」とすると激しく心当たりがあります。
今までは平気だったのに、急に7月3日からなので閾値の変更もありそうな感じがします。
いくつかの原因のイメージが特定できただけでもかなり収穫がありました!
詳しい情報をありがとうございました!

”「契約サーバー自身のIPアドレスからのHTTPリクエスト」を減らす”というところを頑張ってみようかと思います。

返信
投稿: 3
 haru
質問投稿者
コミュニティ参加日: 3日前

ご回答ありがとうございました。

「リクエスト数のカウントがドメイン内ではなくサーバー契約内の他のドメイン」と「AIの情報収集」とすると激しく心当たりがあります。
今までは平気だったのに、急に7月3日からなので閾値の変更もありそうな感じがします。
いくつかの原因のイメージが特定できただけでもかなり収穫がありました!
詳しい情報をありがとうございました!

”「契約サーバー自身のIPアドレスからのHTTPリクエスト」を減らす”というところを頑張ってみようかと思います。

返信