【问题标题】:Random 403 errors in PHP loopPHP循环中的随机403错误
【发布时间】:2017-10-17 14:27:27
【问题描述】:

我有一些代码循环遍历数据库条目并填写模板,但 5 或 6 小时后它停止循环并引发 403 错误。 这是我使用拉取数据的代码:

if(isset($_GET['pageid'])){
     $page_id = $_GET['pageid'];
}else{
     $page_id = 0;
}
$mysqli = mysqli_connect('localhost', 'readonlyuser', 'password');
$query_pageid = "SELECT PAGE_ID FROM database.GENERAL WHERE PAGE_ID > ".$page_id." AND ACTIVE LIMIT 1;";
$query_results = mysqli_query($mysqli, $query_pageid);
if(mysqli_num_rows($query_results) != 0){
    $query_fields = mysqli_fetch_array($query_results, MYSQLI_ASSOC);
    $page_id = $query_fields['PAGE_ID'];
}else{
    header("refresh:0;url=http://10.10.10.10/address/index.php");
    exit();
}

你们有没有偶然遇到过这样的事情?

【问题讨论】:

  • 可能内存、磁盘空间或某种时间限制耗尽。我们需要更多信息,例如任何错误日志。
  • 与该应用程序有关的错误日志中没有一件事..

标签: php mysql apache http-status-code-403


【解决方案1】:

403 错误表示已到达服务器货车但拒绝采取任何进一步的行动。循环运行 5 - 6 小时会存储大量数据,您可能会内存不足。

解决此问题的一种方法是使用 api。

【讨论】:

  • 你会怎么做?
  • 有很多方法可以制作一个很容易找到的 api。如果您想制作 api,我建议您使用 Laravel 之类的 php 框架或使用 Nodejs 制作。
  • 这样你就不会因为太多的请求而出现 403 错误?
  • 是的。除非您在 api 上进行有限数量的调用。您可以设置您的 api,使其每分钟仅处理 30 个请求。
【解决方案2】:

我建议检查您的网络服务器日志,您看起来基本上是在对自己进行 DoS 攻击,并不断循环访问网络服务器。

【讨论】:

  • 找不到与该应用程序或服务器请求有关的单个错误,只有其他应用程序的错误。
猜你喜欢
  • 2017-02-04
  • 2012-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
  • 2012-09-10
相关资源
最近更新 更多