1

我确定我只缺少一条配置线,但我无法弄清楚它是哪一条。

我的主要 PHP 脚本是:

<?php
  header('Content-Type: text/html; charset=utf-8');
?>
<!DOCTYPE html>
<html>
  <head>
    <title>Secure Login: Log In</title>
    <link rel="stylesheet" href="styles/main.css" />
    <script type="text/JavaScript" src="js/sha512.js"></script> 
    <script type="text/JavaScript" src="js/forms.js"></script> 
  </head>
<body> 
    <form action="tester.php" method="post" name="login_form" accept-charset="utf-8">
        Command: <input type="text" name="command" />  
        <input type="hidden" value="2016-10-14" name="date">
        <input type="submit" value="Send Comamnd" />
    </form>
</body>
</html>

它基本上向另一个名为 tester.php 的 PHP 脚本发送 POST 请求:

<?php
  sleep (70);    // Sleep 70 seconds, just to go beyond 60 seconds 
  echo "Done!";
?>

我的 php.ini 有以下指令:

max_execution_time = 400
max_input_time = 180
default_socket_timeout = 180
mysql.connect_timeout = 190
session.gc_maxlifetime = 1440
mssql.connect_timeout = 500
mssql.timeout = 600

我的 http.conf 有:

Timeout 216000
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 0

如您所见,我已经为 PHP 和 Apache 设置了所有相关的超时值,但在 60 秒后我仍然在 Firefox 中得到了这个:“与服务器的连接在页面加载时被重置。”

如果我在 Android 中通过 OkHttp3(作为 REST 服务)发送请求,我会在 60 秒后得到:“D/OkHttp: <-- HTTP FAILED: java.io.IOException: unexpected end of stream on okhttp3.Address”。

为什么我不能增加超时?(顺便说一句,请不要建议优化我的脚本,我只想知道让我运行 PHP 脚本超过 60 秒的解决方案。)

更新 1:

我跟踪到这一点的行为:60 秒超时仅在我使用 3G 宽带连接时出现。这么奇怪。我猜想该 3G 连接中必须有硬件或路由器或其他东西来重置 POST 请求。我怎么知道它是什么以及如何预防它?

4

0 回答 0