Хочу заливать файлы на ftp по списку! список вида host;user;pass дак вот скриптик выдает ошибку если ftp не верный и прекращает работу хотя в списке есть еще серваки! Что надо изменить чтобы скрипт выдавал что этот сервер не доступен или не работает и продолжал дальше работу!??? PHP: <?php $ftppypelist = $_POST['ftptype']; if($ftptypelist==1) { $ftpspisok = file($_POST['ftpspisokpost']); for ($index = 0 ; $index < count($ftpspisok); $index++) { list($ftpspisok, $userspisok, $passspisok) = explode(";", $ftpspisok[$index]); $ftp_server = $ftpspisok; $ftp_login = $userspisok; $ftp_password = $passspisok; $local_dir = $dir; $ftp_root = $_POST['ftpdir']; ///Заливаем папку на ftp function do_upload($dir = 'upload') { global $conn_id, $ftp_root, $transfer_mode, $local_dir; $ftp_dir = preg_replace('/^'.$local_dir.'\/?/', '', $dir); if ($ftp_dir != '') echo 'Папка '. $ftp_dir . ((ftp_mkdir($conn_id, $ftp_root . $ftp_dir)) ? ' создана' : ' не создана').'<br />'; $filelist = glob(($dir!='') ? $dir.'/*' : '*'); if ($filelist == array()) return 0; foreach ($filelist as $file) { if (is_file($file)) { $transfer_mode = (preg_match('/\.(gif|jpg|png)$/', $file)) ? FTP_BINARY : FTP_ASCII; echo 'Файл ' . $file . ((ftp_put($conn_id, $ftp_root . preg_replace('/^'.$local_dir.'\//', '', $file), $file, $transfer_mode)) ? ' загружен' : ' не загружен').'<br />'; } else do_upload($file); } return 0; } $conn_id = ftp_connect($ftp_server); $login_result = ftp_login($conn_id, $ftp_login, $ftp_password); if (!$conn_id || !$login_result) exit("<br>Не удалось установить соединение с FTP сервером!\nПопытка подключения к серверу $ftp_server!"); else echo "Установлено соединение с FTP сервером $ftp_server<br />"; do_upload($local_dir); ftp_close($conn_id); } } ?>
ну да я просто забыл! в коде то все правильно но если не цепляется к фтп в списке цикл прекращается!! надо чтобы просто ошибку вывел и продолжил дальше!
1. Вынести описание функции do_upload из цикла. 2. Заменить exit на echo и добавить после else фигурные скобки: PHP: <? ...... $conn_id = ftp_connect($ftp_server); $login_result = ftp_login($conn_id, $ftp_login, $ftp_password); if (!$conn_id || !$login_result) echo("<br>Не удалось установить соединение с FTP сервером!\nПопытка подключения к серверу $ftp_server!"); else { echo "Установлено соединение с FTP сервером $ftp_server<br />"; do_upload($local_dir); ftp_close($conn_id); } ?>