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>

これは基本的に POST リクエストを tester.php という別の PHP スクリプトに送信します。

<?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 で (REST サービスとして) OkHttp3 経由でリクエストを送信すると、「D/OkHttp: <-- HTTP に失敗しました: java.io.IOException: okhttp3.Address でストリームが予期せず終了しました」というメッセージが 60 秒後に表示されます。

タイムアウトを増やせないのはなぜですか? (ちなみに、スクリプトの最適化についてアドバイスしないでください。PHP スクリプトを 60 秒以上実行できるソリューションを知りたいだけです。)

更新 1:

この時点まで動作を追跡しました。60 秒のタイムアウトは、3G ブロードバンド接続を使用している場合にのみ表示されます。とても奇妙。その 3G 接続には、POST 要求をリセットするハードウェアまたはルーターまたは何かがあるに違いないと思います。どうすればそれが何であるかを知り、それを防ぐ方法はありますか?

4

0 に答える 0