Что нового

Присвоение значение переменной удаленно

lastangel

Новичок
Сообщения
39
Репутация
0
Идея такова,что б при запуске скрипта, он считывал переменные, записаные в удаленном файле, которые лежит на фтп, либо дропбокс, либо гугл диск...Желательно, что б он каждые 5 минут обновлял значения
 

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
Вот что-то типа UDF, которая предоставляет возможность автоматической загрузки файла с FTP через равные (указанные) промежутки времени, а переменные сам поставишь :smile:
 
Автор
L

lastangel

Новичок
Сообщения
39
Репутация
0
Попробовал сделать что-то типа:
Код:
#include <FTPEx.au3>


$server = 'xxx'
$username = 'xxx'
$pass = 'xxx'


Global $IniName = '1.ini'
Global $Path = @TempDir
Global $IniPath = $Path & "\" & $IniName
Global $Diary, $Screen

_ftpini()
 MsgBox(0, '', $Diary &@CRLF&$Screen&@CRLF)




Func _ftpini()
	Local $Open = _FTP_Open("My FTP")
	Local $Conn = _FTP_Connect($Open, $server, $username, $pass, 1)
	Local $Ftpg = _FTP_FileGet($Conn,$IniName,$IniPath)
	Local $Ftpc = _FTP_Close($Open)
	$Diary=IniRead($IniPath,"CONFIG","DIARY","1")
	$Screen=IniRead($IniPath,"CONFIG","SCREEN","1")
EndFunc

Вроде выводит нужные значения, но как теперь заставить их обновляться, через какое-то время?
 

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
Как-то так :smile:
Код:
#include <FTPEx.au3>


$server = 'xxx'
$username = 'xxx'
$pass = 'xxx'


Global $IniName = '1.ini'
Global $Path = @TempDir
Global $IniPath = $Path & "\" & $IniName
Global $Diary, $Screen

AdlibRegister("_ftpini", 1000)
_ftpini()

While 1
Sleep(100)
Wend

Func _ftpini()
AdlibUnRegister("_ftpini")
    Local $Open = _FTP_Open("My FTP")
    Local $Conn = _FTP_Connect($Open, $server, $username, $pass, 1)
    Local $Ftpg = _FTP_FileGet($Conn,$IniName,$IniPath)
    Local $Ftpc = _FTP_Close($Open)
    $Diary=IniRead($IniPath,"CONFIG","DIARY","1")
    $Screen=IniRead($IniPath,"CONFIG","SCREEN","1")
MsgBox(0, '', $Diary &@CRLF&$Screen&@CRLF)
AdlibRegister("_ftpini", 1000)
EndFunc
 

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
А какие именно значения должны меняться? $Diary и $Screen?
 

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
Попробуйте так:

Код:
#include <FTPEx.au3>


$server = 'xxx'
$username = 'xxx'
$pass = 'xxx'


Global $IniName = '1.ini'
Global $Path = @TempDir
Global $IniPath = $Path & "\" & $IniName
Global $Diary, $Screen

AdlibRegister("_ftpini", 1000)
_ftpini()

While 1
Sleep(100)
Wend

Func _ftpini()
AdlibUnRegister("_ftpini")
    FileDelete ( $IniPath )
    Local $Open = _FTP_Open("My FTP")
    Local $Conn = _FTP_Connect($Open, $server, $username, $pass, 1)
    Local $Ftpg = _FTP_FileGet($Conn,"/"&$IniName,$IniPath)
    Local $Ftpc = _FTP_Close($Open)
    $Diary=IniRead($IniPath,"CONFIG","DIARY","1")
    $Screen=IniRead($IniPath,"CONFIG","SCREEN","1")
	If $Ftpg = 1 Then
	MsgBox(0, 'Успешно', $Diary &@CRLF&$Screen&@CRLF)
	Else
	MsgBox(16,"Ошибка","Не удалось загрузить файл с FTP сервера")
	EndIF
AdlibRegister("_ftpini", 1000)
EndFunc


Я подозреваю, что файл не загружается с FTP сервера, поэтому значения и не меняется :smile:
 
Автор
L

lastangel

Новичок
Сообщения
39
Репутация
0
Разобрался с загрузкой, вы были частично правы, последующие загрузки были из кэша, а не из сервера, по этому надо было лишь добавить флаг:
Код:
$Ftpg = _FTP_FileGet($Conn,"/"&$IniName,$IniPath, '', '',  $INTERNET_FLAG_RELOAD)
 

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
Я обычно не заморачиваюсь с FTP загрузкой файла на ПК и делаю это так:
Код:
InetGet ( "ftp://ПОЛЬЗОВАТЕЛЬ:ПАРОЛЬ@СЕРВЕР/ПУТЬ", "Конечный файл", 1, 0 )


Из справки: "ftp://myuser:[email protected]"
Посмотрите подробнее про функцию InetGet :smile:
 
Верх