2017-03-28 15 views
0

HTTPリクエストをウェブサイトに送信して30秒間接続を有効にしてから、それを強制終了する方法は不思議でした。 PHPかJavascriptで可能ですか?例えばHTTPリクエストを送信して30秒待つ

: 1.スクリプトは、接続は、接続がクローズされます期限切れ後30秒 3.のために生かされる 2をStackOverflowの要求を送信します。

ありがとうございます。

+0

なぜこれを行う必要がありますか? – Barmar

+0

わかりません、私の友人は私に尋ねました、私は本当にこれがどうやってできるのか不思議です。 – Iskren

+0

'fsockopen()'を使用して接続を開き、 'fputs()でHTTPリクエストを送信し、接続を閉じる前に30秒間スリープします。 – Barmar

答えて

1

fsockopen()を使用して接続を手動で開くと、要求を送信して接続を閉じるタイミングを制御できます。

$conn = fsockopen("stackoverflow.com", 80); 
$request = "GET/HTTP/1.1\r\n" + 
    "Host: stackoverflow.com\r\n" + 
    "Connection: keep-alive\r\n\r\n"; 
fputs($conn, $request); 
$response = fgets($conn); 
sleep(30); 
close($conn); 

Connection: keep-aliveクライアントが閉じるまで(これは実際にはHTTP/1.1のデフォルトが、明示的にそれを送ることで害である)のオープン接続を維持するために、サーバーに指示します。

しかし、ほとんどのWebサーバーには、アイドル状態の接続を閉じる非アクティブなタイムアウトがあります。 Wikipediaによると、このデフォルトはApache httpd 1.3と2.0では15秒、httpd 2.2では5秒です。したがって、上記のコードは効果がない可能性があります。サーバーが接続を終了しないようにするには、数秒ごとに新しい要求を送信し続ける必要があります。

関連する問題