5

PUTリクエストを介して大きなファイルのアップロードを受信するスクリプトがあります。これらのファイルは、アップロード時にその場で処理が行われます。ファイルが最初の数バイトで無効であることが検出されることがあるためdie()、エラーメッセージが表示されます。唯一の問題は、クライアントが残りのデータを送信することです。これは大きな無駄です。着信接続をシャットダウンする方法はありますか?

コード:

$fp = fopen('php://input', 'rb');

// Do some data checking here
if( <invalid> ) {
    fclose($fp);
    die('Error');
}

stream_socket_shutdownそれは仕事をするかもしれないように見えましたが、それは効果がありません。

これを行う方法はありますか?このためだけに拡張機能を作成する必要がある場合でも?

4

1 に答える 1

1

次のショットを実行して、接続が適切に終了するかどうかを確認することをお勧めします。

$fp = fopen('php://input', 'rb');

// Do some data checking here
if( <invalid> ) {
    fclose($fp);
    header("Content-Length: 0");
    header("Connection: close");
    flush();
    die('Error');
}
于 2012-06-01T14:58:05.493 に答える