Что нового

зачем нужна рекурсия в _FTP_DirPutContents если всё ровно выдаёт ошибку ?

urrya

Новичок
Сообщения
159
Репутация
1
Доброго времени суток дамы и гос-да.
Снова злосчастный код выдаёт ошибку!
Но главное не постоянно, а лишь изредка.

код -
Код:
#include <String.au3>
#include <Array.au3>
#include <FTPEx.au3>

Local $Open = _FTP_Open('ftp')
Local $Conn = _FTP_Connect($Open, $server, $username, $pass, 1)

_FTP_DirSetCurrent($Conn, '/' & $fFoldServer) ; вход в папку
Local $_Array = _FTP_ListToArray($Conn, 1, $INTERNET_FLAG_RELOAD)
Local $chh = 0, $ich = 0

If FileExists($fFoldLocal_dir_name) Then

Do
If $_Array[0] = 0 Then

    $_DirGet = _FTP_DirGetCurrent($Conn) ; Возвращает текущий каталог на FTP сервере.
If $_DirGet == '/' & $fFoldServer Then _FTP_DirCreate($Conn, $fFoldServer_dir_name) ; создаёт каталог

_FTP_DirCreate($Conn, $fFoldServer_dir_name & $filerar2) ; создаёт каталог
$put = _FTP_DirPutContents($Conn, $fFoldLocal_dir_name, $fFoldServer_dir_name & $filerar2, 1)

   Else
	   $chh = $_Array[0]
If $_Array[$chh] = $dir_name Then ; если последняя папка сегодняшней даты
_FTP_DirCreate($Conn, $fFoldServer_dir_name & $filerar2) ; создаёт каталог

$put = _FTP_DirPutContents($Conn, $fFoldLocal_dir_name, $fFoldServer_dir_name & $filerar2, 1)

  Else  ; иначе создаёт каталог

_FTP_DirCreate($Conn, $fFoldServer_dir_name) ; создаёт каталог
_FTP_DirCreate($Conn, $fFoldServer_dir_name & $filerar2) ; создаёт каталог
$put = _FTP_DirPutContents($Conn, $fFoldLocal_dir_name, $fFoldServer_dir_name & $filerar2, 1)

EndIf
EndIf

If $put <> 1 Then $ich -= 1
_FTP_DirSetCurrent($Conn, $fFoldServer_dir_name & $filerar2) ; вход в папку
$_Arrayf = _FTP_ListToArray($Conn, 2, $INTERNET_FLAG_RELOAD)

If $_Arrayf <> 0 Then
$2Conn = _FTP_Close($Conn)
$2Open = _FTP_Close($Open)
$ich = 10

DirRemove($fFoldLocal_dir_name, 1)
Else
$ich += 1
EndIf
Until $ich = 10
EndIf


каталоги отправляются каждые 6 мин., но иногда, после передачи на сервер третьего каталога или позже, выдаёт ошибку о переполнении стека -
Error: Recursion level has been exceeded - AutoIt will quit to prevent stack overflow.

помогите пожалуйста исправить .

P.S. Зачем вообще рекурсия в функции
Код:
_FTP_DirPutContents()
если всё ровно будет ошибка по истечению лимита повторов? абсурд какой то.
:scratch:
 
Автор
urrya

urrya

Новичок
Сообщения
159
Репутация
1
Вопрос по теме не решён.
:smile:
Для себя решил простым выключением рекурсии -
Код:
$put = _FTP_DirPutContents($Conn, $fFoldLocal_dir_name, $fFoldServer_dir_name & $filerar2, 0)

;)
 
Верх