2013-12-21 4 views
0

Я использовал этот код для копирования zip-файла 45 мб с сервера на сервер B.Загрузка или копирование больших файлов с сервера на сервер

<?php 
set_time_limit(0); 
$file = 'https://www.xxxxx.com/Products.zip'; 
$newfile = 'Products.zip'; 

if (copy($file, $newfile)) { 
    echo "Copy success!"; 
}else{ 
    echo "Copy failed."; 
} 
?> 

После копирования 17 mb itis дает ошибку сервера.

Я использовал некоторые другие коды, чтобы загрузить или скопировать с сервера на сервер, как

<?php 
set_time_limit(0); 
    $url = 'https://www.mydomaind.com/Products.zip'; 

    $path = 'Products.zip'; 

    $ch = curl_init($url); 

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

    $data = curl_exec($ch); 

    curl_close($ch); 

    file_put_contents($path, $data); 

echo 'done'; 

?> 

Еще один

<?php 
set_time_limit(0); 
$source =("https://www.mydomaind.com/Products.zip"); 
$destination = 'Produtcs.zip'; 

$data = file_get_contents($source); 

$handle = fopen($destination, "w"); 
fwrite($handle, $data); 
fclose($handle); 
echo 'done'; 

?> 

Этих последний код загрузку или копировать файлы как 5 МБ легко. Но когда itry на ту же работу за 50 мб. Дает ошибку.

Пожалуйста, помогите, как я могу это сделать. Thanks

+0

«Он дает ошибку halp» не является допустимым сообщением об ошибке, которое генерирует PHP. – PeeHaa

+0

Я получил ошибку 500internal сервера – lospicos

ответ

0

Ваш предел в php.

Просмотр php.ini и до предела

; Maximum allowed size for uploaded files. 
upload_max_filesize = 40M 

; Must be greater than or equal to upload_max_filesize 
post_max_size = 40M 

P.S. вы не должны использовать PHP для отправки файлов между серверами.

Лучше использовать SSH и SCP. PHP может обедать командами с exec(), чем вы используете shell для отправки файла.

+0

Я не могу пойти на php.ini на моем хостинге. Не позволяет мне. Я нахожусь на godaddy. – lospicos

+0

попробуйте ini_set() - если он не отключен. Еще, найдите другого хоста или пойдите в VPS. EDIT: Вы уверены, что вы проверили панель управления GoDaddy? На большинстве хостов есть опция ... – RobAtStackOverflow

+0

Я попробовал ini set, ini_set ('upload_max_filesize', '60'); ini_set ('post_max_size', '60'); я waiitng. – lospicos

0

Если вы ударяете свой лимит, вот еще один SO ответ о том, как установить его в .htaccess

Changing upload_max_filesize on PHP

+0

ini_set ('upload_max_filesize', '60'); ini_set ('post_max_size', '60'); использовано это не работало. Я получил 500 внутренних ошибок сервера – lospicos

0

К сожалению ответить здесь модов, пока не может комментировать!
Уже попытался разбить/вырезать молнию на 2/3 части?
Imho поможет решить вашу проблему без ошибок со стороны сервера.

+0

Я пробовал somthing как размер куска. BUt это не сработало. Если вы знаете, как я могу сделать лучше, пожалуйста, сообщите – lospicos

+0

Возможно, возможно, это возможно [ссылка] (http://stackoverflow.com/questions/4357073/on-the-fly-zipping -streaming-of- большие-файлы-в-php-или-иначе? answertab = active # tab-top), где они говорят о «на лету» zipping/downloaden (как сделать это на молнии), могут помочь вам немного? – Charles

0

Попробуйте использовать этот код, чтобы вы не использовали доступную оперативную память на своем сервере.

function chunked_copy() { 
    # write with buffer, 1 meg at a time, adjustable. 
    $buffer_size = 1048576; 
    $ret = 0; 
    $fin = fopen("http://www.example.com/file.zip", "rb"); #source 
    $fout = fopen("file.zip", "w"); #destination 
    while(!feof($fin)) { 
     $ret += fwrite($fout, fread($fin, $buffer_size)); 
    } 
    fclose($fin); 
    fclose($fout); 
    return $ret; # return number of bytes written 
} 
Смежные вопросы