[PHP] Плохо работает с ФТП

Hubba_Bubba
На сайте с 26.11.2005
Offline
75
1014

Всем здравствуйте.

Уважаемые форумчане, прошу помощи.

Есть скрипт, который подключатся на удаленный ФТП и загружает туда пачку файлов.

На старом сервере скрипт работал без проблем и очень шустро (также хорошо работает и на некоторых других серваках). Но после переноса на новый сервер начались косяки: загружает несколько картинок и теряет соединение (причем возвращается 500 ошибка). В логах следующее:

Несколько строк подряд типа:

connection refused
connection refused
connection refused

Помогите понять в чем проблема? ПРоблема в новом сервере или в удаленном ФТП?

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

Сайт экономистов БелГУТа (http://economistov.net)
Dim_K
На сайте с 11.07.2007
Offline
85
#1

У меня тоже часто похожие проблемы с ФТП на хостинге. Думаю дело в удаленном ФТП.

T.R.O.N
На сайте с 18.05.2004
Offline
314
#2

Hubba_Bubba,

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

2. Возможно на новом сервере есть ограничения или на программный исходящий трафик или на скорость исполнения подобных команд.

3. Обычно можно решить такие ограничения заменив стандартный фтп клиент (как понимаю все на пыхе написано) на низкоуровневою работу с сокетами

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
Hubba_Bubba
На сайте с 26.11.2005
Offline
75
#3
T.R.O.N:
Hubba_Bubba,
1. Если есть доступ к любому шелу на сервере, попробуйте из него сделать аналогичное. Будет теряться или нет?
2. Возможно на новом сервере есть ограничения или на программный исходящий трафик или на скорость исполнения подобных команд.
3. Обычно можно решить такие ограничения заменив стандартный фтп клиент (как понимаю все на пыхе написано) на низкоуровневою работу с сокетами

1. Пробововал заливать из под шелла: заливал большой архив размером 84 Мб. Все нормально прошло.

T.R.O.N
На сайте с 18.05.2004
Offline
314
#4

Hubba_Bubba,

Тогда увеличьте таймаут подключения (я стараюсь не писать на пыхе, поэтому точно не скажу как). Скорее всего при создании соединения один из параметров именно таймаут.

ЗЫ один файл или несколько файлов - штука разная. выложите код подключения и отправки. Чудес ведь не бывает.

[Удален]
#5

Hubba_Bubba, у вас хостинг под управлением ISP?

Hubba_Bubba
На сайте с 26.11.2005
Offline
75
#6
Dim_K:
У меня тоже часто похожие проблемы с ФТП на хостинге. Думаю дело в удаленном ФТП.

Но ведь есть сервера, с которых скрипт нормально работает.

Hubba_Bubba добавил 16.12.2009 в 16:16

T.R.O.N:
Hubba_Bubba,
Тогда увеличьте таймаут подключения (я стараюсь не писать на пыхе, поэтому точно не скажу как). Скорее всего при создании соединения один из параметров именно таймаут.

ЗЫ один файл или несколько файлов - штука разная. выложите код подключения и отправки. Чудес ведь не бывает.

Таймаут пробовал. Да, при инициализации соединения можно указать таймаут. Ставил и 3000 секунд - результат не изменяется.

Кусочки кода:

$conn_id = ftp_connect($gal_host, "21", "360"); 


// login с username и password
$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);
ftp_pasv($conn_id, true); // переключаемся в пассивный режим

потом идет кусочек где переходим по папкам и выставляем CHMOD. И несколько манипуляций со сроками.

И сама выгрузка файлов:

foreach($arr_tmp as $img)

{
$local_img=str_replace("DOMEN", ".", $img);
$rem_tmp=explode("/", $local_img);
$rem_folder=$rem_tmp[1]; // имя директории
$rem_img=$n.".jpg";

// установить базовое соединение
$upload = ftp_put($conn_id, $rem_img, $local_img, FTP_BINARY);
if (!$upload) {
echo "FTP upload has failed!";
} else {
#echo "Uploaded source_file to ftp_server as destination_file";
$n++;
}

}

Hubba_Bubba добавил 17.12.2009 в 03:26

Все, слава богу разобрались.

Проблема была в том, что ини-файл для ПХП читался из другого места. И время выполнения скрипта все таки было коротким. Но вот ПХП - подлец, зачем он писал мне в логи что соединение отвергнуто удаленным сервером?

Всем спасибо, кто откликнулся на мою проблему!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий