Проблема с FTP upload на хостинге

Markus

Новичок
чтобы прочитать по кусочкам файл и остановить чтение
 

Фанат

oncle terrible
Команда форума
не понял ответа.
Хорошо, я переформулирую вопрос.
Почему она сразу не пишет в файл, а копит полученное в памяти?
укладывается ли скрипт копирования в ограничение по времени?
 

Markus

Новичок
я думаю нет, поэтому попытался увеличить поставив вначале скприпта

define('TIME_LIMIT', 6000);
$is_safe_mode = ini_get('safe_mode') == '1' ? 1 : 0;
if (!$is_safe_mode) set_time_limit(TIME_LIMIT);
 

Фанат

oncle terrible
Команда форума
офигеть можно.
у тебя все скрипты такие?
почему нельзя было это написать в одну строчку?
ты недостаток понимания того, что ты делаешь, компенсируешь усложнением кода?

код - это хорошо. а РЕАЛЬНО-то время работы скрипта увеличивается или нет?

Что за хостинг-то? может, хостинг фуфло, а мы тут мучаемся?

а ты только на последний вопрос отвечаешь?
 

Markus

Новичок
код написал проще.
set_time_limit(6000);

время не могу узнать, но судя по ошибке, не увеличивается.

хостинг www.sweb.ru, на нем set_time_limit(6000) работает, так как использовал скрипты другие, правда не мной написанны.

а вот насчет считывать по кусочкам или записывать сразу в файл, тут даже незнаю, пример взял с php.net
http://www.php.net/manual/ru/function.fread.php

-~{}~ 08.03.05 15:05:

дело в том что сам скрипт работает, прописал файл с другого сервера, размером 3 мегобайта, он скачал его нормально.
Связываюсь с хостингом по аське, отвечают что стоит ограничение 10 мегобайт все равно

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

Фанат

oncle terrible
Команда форума
хренассе.
поправь меня, если я ошибаюсь.
ты у нас пишешь скрипт не для себя, а для распространения.
Этот скрипт занимается тем, что каждый божий день скачивает себе на хост десятиметровый файл.

Не дай помереть от любопытства. Расскажи скорее - что такое этот скрипт делает?
 

Markus

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

Фанат

oncle terrible
Команда форума
а вот насчет считывать по кусочкам или записывать сразу в файл, тут даже незнаю, пример взял с php.net
http://www.php.net/manual/ru/function.fread.php
ты этот пример взял в бинарном виде? Редактировать не можешь?
дело в том что сам скрипт работает, прописал файл с другого сервера, размером 3
и что - если 3 работает, то 300 тоже будет работать? И 500?
а память на сервере, наверное, бесконечная, да?

-~{}~ 08.03.05 15:25:

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

Markus

Новичок
а сам скрипт не для распространения, я просто привык делать все сразу основательно. А то предложение хостинга воспользоваться их утилитой мне не интересно, я себе перестану уважать, если не разберусь, зачем тогда познавать програмирование

-~{}~ 08.03.05 15:28:

Отредактировать не проблема, только вот как.

Я написал к тому что размером 3 мегобайта скачивает, 13 не хочет, в принципе больше 20 и не надо.

Там где я беру базу не будут переделывать свою систему, они даю просто полный дамп своей базы
 

Фанат

oncle terrible
Команда форума
к программированию твои проблемы не имеют ни млаейшего отношения.
прежде, чем делать основательно, надо научиться делать ХОТЯ БЫ как-нибудь, чтобы работало.
 

Markus

Новичок
Смотрю данные на хостинге

max_upload_size = 10М
max_post_size = 8М
max_execution_time = 30

Связанно ли как то это?


Так как раз не работает при большом размере файлов
 

Фанат

oncle terrible
Команда форума
Отредактировать не проблема, только вот как.
господи, ну я же открытым текстом сказал - ЗАПИСЫВАТЬ В ФАЙЛ СРАЗУ
ТЕ ЖЕ КУСКИ, КОТОРЫЕ ПРИХОДЯТ
Не копить их в одной переменной, а тут же записывать в файл!
В ЦИКЛЕ, А НЕ ПОСЛЕ НЕГО

Я написал к тому что размером 3 мегобайта скачивает, 13 не хочет,
И какой смысл в этом твоем написании про три мегабайта?
Там где я беру базу не будут переделывать свою систему, они даю просто полный дамп своей базы
оъренеть можно.
Значит, wget у нас есть не на каждом хостинге, а сокеты и трафик на 10 метров в день - на каждом.
ню-ню.
 

Markus

Новичок
прощу прощения если ошибаюсь

-~{}~ 08.03.05 15:39:

бьюсь уже третий день, как раз решил обратится за помощью, извиняюсь что так отвлекаю, понимаю тебя, на всех начинающих время и нервов не хватит объяснять, не сообразил сразу что ты имеешь ввиду, голова уже кругом
 

Markus

Новичок
Первый раз создал файл размером 500 мегобайт. ошибку нашел.

Потом создает файл размером около 8 и 9 мегобайт и та же самая ошибка, страница недоступна.

Вот код, боюсь что то опять намудрил

PHP:
<?
set_time_limit(6000);

$url="http://host/file.tar.gz";
$file="test.tar.gz";

wwwcopy($url,$file);

function wwwcopy($file,$nfile) 
{ 
$cont="";
   $fp = @fopen($file,"rb");
   $fp2 = @fopen($nfile,"a"); 
   while(!feof($fp)) 
   { 
   $cont= fread($fp,1024);
   fwrite($fp2,$cont); 
   } 

   fclose($fp); 
   fclose($fp2); 
} 
?>
-~{}~ 08.03.05 15:54:

может размеры кусков увеличить?
 

Фанат

oncle terrible
Команда форума
вместо feof поставь свою проверку на длину принятого контента
 

Markus

Новичок
я записывал дополненный cont с каждым циклом, забыл написать нашел и исправил
$cont.=

-~{}~ 08.03.05 16:09:

Фанат!!!
заработало.

while(true)
{
$cont2 = fread ($fp, 1024);

if (strlen ($cont2) == 0) break;

$cont= $cont2;
fwrite($fp2,$cont);
}

хотел бы узнать почему feof не работал правильно?
он для проверки достигнут ли конец файла и должен был вернуть true. но он этого получается не делал??

-~{}~ 08.03.05 16:24:

Спасибо огромное!!!
 
Сверху