2

mp4 videp ファイルをダウンロードするための php スクリプトがあります。現在、サイズの小さいファイル (最大 60 MB がテストされています) に対して適切に動作しています。大きなもの(300 MB)を試してみると、「メモリ制限」に関連するエラーが表示されます。そのため、メモリ制限を最大 400 MB (memory_limit = 400M) に増やすために、ini ファイルでいくつかの編集を行いました。次に、スクリプトを実行しようとしましたが、ダウンロード ボックスに 189 バイトのコンテンツ サイズが表示されます。別のmp4ファイル(小さいサイズ)で試してみましたが、うまくいきました。その理由がわかりません。ですから、親切に私に指示してください。私のスクリプトは次のとおりです..

$file = $_SERVER['DOCUMENT_ROOT']."/folder_name/filename.mp4";
$filesize = filesize($file);
$fileName=$file;
$offset = 0;
$length = $filesize;

if ( isset($_SERVER['HTTP_RANGE']) ) {

    $partialContent = true;

    preg_match('/bytes=(\d+)-?/', $_SERVER['HTTP_RANGE'], $matches);

    $offset = intval($matches[1]);
    $length = $filesize - $offset;
}else {
    $partialContent = false;
}

$file = fopen($file, 'r');

fseek($file, $offset);

$data = fread($file, $length);

fclose($file);

if ( $partialContent ) {

    header('HTTP/1.1 206 Partial Content');

    header('Content-Range: bytes ' . $offset . '-' . ($offset + $length) . '/' . $filesize);
}

header("Content-type: video/mp4");
header('Content-Length: ' . $filesize);
header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Accept-Ranges: bytes');
print($data);

表示されているダウンロードボックスは..

ここに画像の説明を入力

4

2 に答える 2

-1

サーバーがスクリプトへのこの多くのメモリ割り当てをサポートしていない場合は、サーバーに確認してください。

スクリプトの先頭に次の行を追加してください。

ini_set('memory_limit', '-1');
ini_set('max_execution_time', '0');

それが機能しない場合はお知らせください。

于 2013-09-23T07:19:09.783 に答える