【问题标题】:PHP File throwing 404 in the middle of executing (After ~45 seconds)PHP 文件在执行过程中抛出 404(约 45 秒后)
【发布时间】:2017-03-16 02:09:02
【问题描述】:

我在一个没有相关执行时间限制的文件夹中有一个脚本(我经常从这个目录运行长达一小时的脚本),其中有一个文件。该文件从 codeingiter 视图上的 html 表单调用,并上传一个 csv 文件,读取它并使用其中包含的信息更新数据库条目。

如果我有一个较小的 csv 文件(1-1000 个条目),它可以正常工作。超出此范围的任何内容将处理大约 1000 个条目(包括在屏幕上回显调试文本),然后引发 404 错误。

此后,我试图通过使帖子页面进行 ajax 调用来规避该错误,但它的作用完全相同。

“网络错误:404 未找到 - xxxx/xxxx/xxxxx.php”

通过确认数据库中的更改并在屏幕上看到 echo 的调试代码,我已确认脚本在 404 之前运行。

抛出 404 时正在执行的代码... (简而言之,将 id(第一列)更新为 csv 文件中的值(第二列)。

if(file_exists($targetdir))
{
$file = fopen($targetdir, 'r');
$count = 0;
while(!feof($file))
{
    $x = (fgetcsv($file));
    if(is_numeric($x[1]) && $x[1] > 9999 && $x[0] != '-')
    {
        $count++;
        //  echo "UPDATE xxxx SET xxxxx ='".$x[0]."' WHERE id=".$x[1];
        $db->query("UPDATE xxxx SET xxxxx ='".$x[0]."' WHERE id=".$x[1]);
        //echo $x[1].' - '.$x[0]."<br/>";

    }
}
fclose($file);
}

编辑 看起来 Jquery 正在抛出错误?我四处搜索,看到有人说这是服务器设置(但不是什么服务器设置,所以为了它,我将最大执行时间设置为 300 秒并得到相同的结果)。

xxxxx.php 404 xhr jquery-1.12.4.min.js:4 1.6 KB 40.07

Image of 404 rendering after text is echo'd

【问题讨论】:

  • 我怀疑是 php 代码。您必须检查服务器配置。除非您明确告诉它,否则 php 脚本不会随机抛出 404。服务器可能会因超出执行时间限制而终止它,但为什么会显示为 404 是……很奇怪。
  • 发生这种情况时,您是否听到了暮光之城的主题曲?可能是服务器配置错误,当它应该发送 408 时给出 404?
  • 我现在正在研究它,但相对于其他一些运行的脚本,它会在短时间内抛出 408?与运行近一个小时而没有问题的一些脚本相比,我说的是一分钟......谢谢!

标签: php ajax csv runtime-error http-status-code-404


【解决方案1】:

我能够找到跳闸的设置。 不是使用标准的 php 最大执行时间,而是从 FastCGI 设置中获取超时。来自 AJAX 发布或来自读取操作。

不管怎样,我在服务器上的 apache 设置中增加了 FcgidIOTimeout 并且能够执行完整的脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    相关资源
    最近更新 更多