проблема с загрузкой файлов большого размера


У меня есть скрипт загрузки, который хорошо работает на моем локальном компьютере. Но после загрузки на сервер, когда мое приложение ios вызывает скрипт, он останавливается через 100-120 секунд. Я просто изменил сценарий на другой сервер.Это сработало идеально. Я не знаю, какой конфигурации не хватает на сервере (у которого возникла проблема во время загрузки)? Я много гуглил, но все еще не нашел решения. Итак, мой вопрос в том, как я могу решить эту проблему? В чем настоящая проблема? Один из моих поисковых запросов в Google достиг смысл Xscend-файла. Но у меня есть сомнения, поддерживает ли он частичную загрузку? Мой сценарий вниз...

$finfo         = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
$mime_type  = finfo_file($finfo, ROOT_PATH."/file_folder/".$file_name);
$file           = ROOT_PATH."/file_folder/".$file_name;             
$filesize       =   filesize($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("X-Sendfile: $file_name");
header('Content-Description: File Transfer');
header("Content-type: " .$mime_type);
header('Content-Disposition: attachment; filename="' . $file_name. '"');
//header('Content-Transfer-Encoding: binary');
    //header('Expires: 0');
    //header('Cache-Control: must-revalidate');
    //header('Pragma: public');
header('Content-Length: ' . $length);                   
header('Accept-Ranges: bytes');
print($data);
Author: freakydev, 2013-11-30

2 answers

Попробуйте использовать этот код для загрузки файла

$filename= будет вашим именем файла с полным путем, который вы хотите загрузить

И

$filename2= будет вашим именем файла после загрузки файла

 header('Content-Description: File Transfer');
            header('Content-Type: application/octet-stream');
            header('Content-Disposition: attachment; filename='.$filename2);
            header('Content-Transfer-Encoding: binary');
            header('Expires: 0');
            header('Cache-Control: must-revalidate');
            header('Pragma: public');
            header('Content-Length: ' . filesize($filename));
            ob_clean();
            flush();
            readfile($filename);
            exit;
 0
Author: Satish Sharma, 2013-11-30 06:29:14

Установите максимальное время выполнения в файле php.ini сервера

 0
Author: Satish Sharma, 2013-11-30 05:40:29