Задать вопрос
@Alcospb

Перегон файлов с одного хостинга на другой php + ftp

Есть 1000+ изображений на одном сервере
Есть другой, на который необходимо их перенести.

Написал скрипт, вроде работает. Но есть пара проблем:
1. Через раз выдает ошибку подключения и сбой передачи.
2. С большим объемом не справился (пока).
3. Нужен совет как реализовать проверку на существование файла и совпадение размера файла.

Код:
$attachments = $app['db'] -> fetchAll("SELECT attachment FROM base");
	$dest_path = "/a/";
	$source_path = __DIR__ . "/b/";

	$connection = ftp_connect('...ip...');
	$login = ftp_login($connection, login, password);
	
	foreach ($attachments as $attach) {
		$attach = $attach['attachment'];
		$dest = $dest_path . $attach;
		$source = $source_path . $attach;
		if (!$connection || !$login) { die('Connection attempt failed! :: ' . $attach); }
		$upload = ftp_put($connection, $dest, $source, FTP_ASCII);
		if (!$upload) { echo 'FTP upload failed!'; } 
	}
	
	ftp_close($connection);
  • Вопрос задан
  • 2914 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
maxaon
@maxaon
FTP нестабильный протокол, поэтому крайне необходимо оборачивать каждое действие в функцию повтора.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 5
demimurych
@demimurych
А чем обусловлено то, что вы это делаете таким странным способом?
Гораздо эффективнее было бы, на мой взгляд, все таким просто создать архив на одном сервере, и перенести его один большим файлом на второй.
Ответ написан
sdevalex
@sdevalex
Обратитесь в тех поддержку, вам нужно tar сделать (это одна команда в терминале). Далее скачать на другом хостинге и разархивировать (ещё 2 команды). И это в любом случае будет в сотни раз быстрее, чем писать такие скрипты.

Это не трудно сделать, нормальная тех поддержка не откажет.
Ответ написан
Комментировать
Я бы на сервере паковал в архив, переносил, и распаковывал.
Ответ написан
Комментировать
@Alcospb Автор вопроса
Ок ок, парни, понял что проще архивом.

Тогда хотя бы скажите мне, если эта функция будет использоваться для загрузки одного изображения - как избавиться от частых ошибок при подключение?
Ответ написан
hOtRush
@hOtRush
Если фотки доступны из веба, то на второй машине проще через file_get_contents/curl скачивать и сохранять, как мне кажется.

А вообще архивом, да...)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы