Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: работа с ftp протоколом
 
 автор: mastergrom   (17.06.2009 в 20:32)   письмо автору
 
 

есть следующая функция:
<?php
function ftp_copy($directory) {
    global 
$conn_id,$source_path,$ftp_dir,$ftp_login,$ftp_password,$current_dir;
    
$dir opendir($directory);
    while ((
$file readdir($dir)) !== false) {
        if (
is_file("$directory/$file")) {
            
ftp_put($conn_id,$file,"$directory/$file"FTP_ASCII);
        }
        if(
is_dir("$directory/$file") && $file != '.' && $file != '..') {
            
ftp_mkdir($conn_id$file);
            
ftp_chdir($conn_id,$file); 
            
ftp_copy("$directory/$file");
            
ftp_cdup($conn_id);
        }
    }
    
closedir($dir);
}
?>


Изначально указан пасивный режим
ftp_pasv($conn_id,true);

Ну и даже таймаут ставил:
ftp_set_option($conn_id, FTP_TIMEOUT_SEC, 600);


Файлов ~ 2-3 тысячи
Проблемма в том что не все файлы закачиваются. Причем иногда нормально, а иногда где-то виснет и все тут ...
Пробовал писать что-то вроде:
<?php 
if (!ftp_put($conn_id,$file,"$directory/$file"FTP_BINARY)) {
                
$conn_id ftp_connect($ftp_server);
                
ftp_login($conn_id,$ftp_login,$ftp_password);
                
ftp_pasv($conn_id,true);
                
ftp_set_option($conn_idFTP_TIMEOUT_SEC60);
                
ftp_chdir($conn_id,$current_dir); 
                
ftp_put($conn_id,$file,"$directory/$file"FTP_BINARY);
}
?>


Может кто в курсе в чем дело ? Как сделать что-б все файлы были скопированы ?

PS set_time_limit(0)

PS2 И еще, может это имеет значение, вначале работает приложение a.php в котором файл ftp_upload.php вызвается следующим образом:

<?php 
foreach ($some_array as $key =>value) {
// код
if ($upload === true
 
$url 'http://' $_SERVER['HTTP_HOST'] . preg_replace("#(a\.php)(.*)$#Usi","",$_SERVER['REQUEST_URI']) . 'ftp_upload.php?id=' $siteID;
 
$ch curl_init($url);
 
curl_setopt($chCURLOPT_RETURNTRANSFER1);
 
curl_exec($ch);
}
// код
}
?>


Дело в том что я вначале хотел вызывать ftp_upload.php с параметром curl_setopt($ch, CURLOPT_NOBODY, 1)
Что-б скрипт а продолжал работать, а ftp_upload тоже работал независимо, но что-то не срослось .. Может кто подскажет как реализовать?
То есть, может таймаут срабатывает у curl ? (хотя наврядли)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования