2017-01-26 17 views
-1

Я использую следующий скрипт для загрузки больших файлов (от 600 мб до 2 гб), но PHP останавливается после загрузки 30-40 МБ. Я запускаю это на своем хостинге с сетевым подключением 1 Гбит/с, поэтому никаких проблем с этим.PHP не загружает полный файл

<?php 
if(isset($_POST['submit'])){ 
    $file_source = $_POST['url']; 
    $file_target = $_POST['name']; 
    set_time_limit(0); 
    $rh = fopen($file_source, 'rb'); 
    $wh = fopen($file_target, 'w+b'); 
    if (!$rh || !$wh) { 
     return false; 
    } 

    while (!feof($rh)) { 
     if (fwrite($wh, fread($rh, 4096)) === FALSE) { 
      return false; 
     } 
     echo ' '; 
     flush(); 
    } 

    fclose($rh); 
    fclose($wh); 

    return true; 
} 
?> 


<form method="post"> 
    NAME : <input type="text" name="name" required><br><br> 
    URL : <input type="text" name="url" required><br><br> 
    <input type="submit" name="submit" value="submit"> 
</form>**strong text** 
+0

Возможно, ваше max_execution_time в php.ini ограничивает выполнение скрипта. вы должны проверить это и увеличить его до подходящего значения, если оно меньше, чем вам нужно, и повторите попытку. – SajeshBahing

+0

@SajeshBahing Позвольте мне попробовать –

+0

Возникли ли какие-либо ошибки из любого места? Попробуйте установить 'error_reporting (E_ALL); ini_set ('display_errors', 1); 'и посмотреть, всплывает ли что-нибудь. Также журналы журналов могут иметь некоторую дополнительную информацию – apokryfos

ответ

1

Вы, вероятно, необходимо установить значение upload_max_filesize и post_max_size в вашем php.ini файле:

; Maximum allowed size for uploaded files. 
upload_max_filesize = 2G 

; Must be greater than or equal to upload_max_filesize 
post_max_size = 2G 

More about php ini directives

Файлы больше, то 2Гб не представляется возможным из-за предела Апача размеров POST (2gb) http://httpd.apache.org/docs/current/mod/core.html#limitrequestbody

-1

Посмотрите, если это поможет ...

<?php 
if(isset($_POST['submit'])) 
{ 
    $file_source = $_POST['url']; 
    $file_target = $_POST['name']; 
    set_time_limit(0); 

    file_put_contents($file_target, fopen($file_source, 'r')); 

} 
?> 


<form method="post"> 
    NAME : <input type="text" name="name" required><br><br> 
    URL : <input type="text" name="url" required><br><br> 
    <input type="submit" name="submit" value="submit"> 
</form>**strong text** 
+0

Вы должны * объяснить *, что вы сделали ... –