|
|
|
| у меня проблема:
Можно ли как нить сделать.. например файл reg.php лежит на хосте и надо через фтп законектиться к другому серверу ftp://2003.uran.ru/ и в файл sphereacct.scp
дописывать инфу
вот путь ftp://2003.uran.ru/SAVE/sphereacct.scp
как так сделать что бы с одного хоста при активации скрипта он писал на другой хост ? | |
|
|
|
|
|
|
|
для: Hitro
(11.08.2004 в 21:56)
| | Вообще FTP – очень древний протокол – ему скоро 40 лет, в те далёкие времена люди думали только, как бы файл получить или передать, а не дописывать на чужом хосте. Но можно держать актуальную версию файла sphereacct.scp на хосте где расположен reg.php – работать с файлом – дописывать в него что-то и при необходимости каждый раз его перебрасывать по FTP на соседний хост.
Схема действия должна быть примерно следующая:
1) Соединяемся с FTP-сервером и регистрируемся на нём:
<?php
// Небольшая вспомогательная функция, которая выводит сообщение об ошибке
// в окно браузера
function puterror($message)
{
echo "<center><p class=help>$message</p>";
exit();
}
// Адрес FTP-сервера
$ftp_server = "2003.uran.ru";
// Пользователь
$ftp_user = " Hitro";
// Пароль
$ftp_password = "password";
// Пытаемся установить соединение с FTP-сервером
$link = ftp_connect($ftp_server);
if(!$link) puterror("К сожалению, не удаётся установить соединение с FTP-сервером $ftp_server");
// Осуществляем регистрацию на сервере
$login = ftp_login($link, $ftp_user, $ftp_password);
// Определяем тип операционной системы сервера
// предоставляющего услуги FTP
$type = ftp_systype($link);
// Если операционная система отличается от UNIX
// прекращаем дальнейшую работу
if($type != "UNIX") puterror("К сожалению, на
удалённом сервере операционная система не
совеместимая с UNIX");
?>
|
2) Перекидываем файл sphereacct.scp на соседний хост
<?php
$ret = ftp_nb_put($link, "/SAVE/sphereacct.scp", "sphereacct.scp", FTP_BINARY);
while ($ret == FTP_MOREDATA)
{
// Выводим точки что-бы пользователь
// знал что процесс идёт
echo ".";
// Продолжаем загрузку
$ret = ftp_nb_continue($link);
}
if ($ret != FTP_FINISHED)
{
echo "<br>Во время загрузки файла произошла ошибка...";
exit();
}?>
|
| |
|
|
|
|
|
|
|
для: cheops
(11.08.2004 в 22:36)
| | Блин как же я не подумал о функции перекидывания файла )
Сенк | |
|
|
|
|
|
|
|
для: cheops
(11.08.2004 в 22:36)
| | Хотя если новые данные только в конце и известно начиная с какого байта изменения, то можно загружать данные начиная с n-й позиции, передавая позицию (в байтах от начала файла) с которой следует загружать файл, в пятом необязательном параметре функции ftp_nb_put()
<?php
$ret = ftp_nb_put($link,
"/SAVE/sphereacct.scp",
"sphereacct.scp",
FTP_BINARY
4567); // Передаём данные с 4567 байта (в файле допустим 6230 байт)
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(11.08.2004 в 22:44)
| | что то все равно не робит команда
ftp_nb_put | |
|
|
|
|
|
|
|
для: Hitro
(12.08.2004 в 00:12)
| | А что возвращаяет? FTP_FINISHED? | |
|
|
|
|
|
|
|
для: cheops
(12.08.2004 в 00:37)
| | Вобще не работает
я даже пробывал команду для загрузки с сервера фпт тоже не пашет а команда на удаление работает а на загрузку и закачку не пашут :(
блин ! | |
|
|
|
|
|
|
|
для: Hitro
(12.08.2004 в 19:13)
| | Скорее всего 21 порт открыт (по нему передаются команды), а 20 (или какой там... уж не помню) через которые идут данные закрыт :( - старые штучки, либо админы не знают о втором порте, либо специально закрыли чтобы ушлые пользователи лишнюю сетевую активность не производили... | |
|
|
|
|
|
|
|
для: cheops
(12.08.2004 в 22:09)
| | Я тестю скрипты на своем сервере
Все я уже сделал :) | |
|
|
|