В качестве примера загрузка файлов по FTP
Файл ftp.txt прилагается
/**
* Download files from ftp server (example)
* @author Screamer <nwotnbm@gmail.com>
*/
set_time_limit(0);
error_reporting(-1);
ini_set('display_errors', TRUE);
$server = 'ftp.heavy-music.ru';
$login = 'guest';
$password = 'guest+';
$ftp = ftp_connect($server);
if (!$ftp) {
exit('Unable to connect to ftp server: ' . $server);
} else {
echo 'Connected: ' . $server . PHP_EOL;
}
if (!ftp_login($ftp, $login, $password)) {
exit('Unable to login to ftp server with login ' . $login . ' and password ' . $password);
} else {
echo 'Login: ' . $login . ' - ' . $password . PHP_EOL;
}
$groups = file_get_contents('ftp.txt');
$groups = explode(PHP_EOL, $groups);
foreach ($groups as $item) {
if (@ftp_chdir($ftp, $item)) {
echo 'Current directory: ' . $item . PHP_EOL;
$list = ftp_rawlist($ftp, '');
foreach ($list as $l_item) {
preg_match('~[\d]{2}\:[\d]{2}\s+(.*)~', $l_item, $dir);
if (!empty($dir)) {
// cd %subdirectory%
if (@ftp_chdir($ftp, $dir[1])) {
$files = ftp_rawlist($ftp, '');
if (!empty($files)) {
// Try to download files
foreach ($files as $f_item) {
preg_match('~[\d]{2}:[\d]{2}\s(.*).mp3~', $f_item, $matches);
if (!empty($matches)) {
echo 'Try to download file : ' . $matches[1] . '.mp3' . PHP_EOL;
$local_file = './files/' . $item . ' - ' . $dir[1] . ' - ' . $matches[1] . '.mp3';
if (is_file($local_file)) {
echo $local_file . ' already exists' . PHP_EOL;
} else {
if (@ftp_get(
$ftp,
$local_file,
'/' . $item . '/' . $dir[1] . '/' . $matches[1] . '.mp3',
FTP_BINARY)
) {
echo 'File is downloaded to ' . $local_file . PHP_EOL;
break;
} else {
echo 'Unable to download file ' . PHP_EOL;
}
}
}
}
} else {
echo $item . '/' . $dir[1] . ' - List is empty' . PHP_EOL;
}
ftp_cdup($ftp);
echo 'CDUP' . PHP_EOL;
} else {
echo 'No such directory: ' . $dir[1] . PHP_EOL;
}
} else {
echo 'Unable to find directoies in ' . $item . PHP_EOL;
}
}
ftp_cdup($ftp);
echo 'CDUP' . PHP_EOL;
} else {
echo 'No such directory: ' . $item . PHP_EOL;
}
}
ftp_close($ftp);