|
|
|
| есть следующая функция:
<?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_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_id, FTP_TIMEOUT_SEC, 60);
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($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch);
}
// код
}
?>
|
Дело в том что я вначале хотел вызывать ftp_upload.php с параметром curl_setopt($ch, CURLOPT_NOBODY, 1)
Что-б скрипт а продолжал работать, а ftp_upload тоже работал независимо, но что-то не срослось .. Может кто подскажет как реализовать?
То есть, может таймаут срабатывает у curl ? (хотя наврядли) | |
|
|