[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузка файла из формы сразу на 2 сайта. Как?
vlaimir
Через админ часть пользователи могут закачивать файлы на сайт. Как можно сделать, чтобы закачка шла сразу на 2 сайта: основной, где расположена форма - понятно как делать, а как еще сразу его закачать на резервный сайт? Да еще бы сделать так, чтобы закачка на 2 сайта по времени была равно одной, чтобы пользователь не ждал когда загрузится и туда, и туда.



Спустя 20 часов, 17 минут, 25 секунд (16.03.2008 - 09:54) LoneCat написал(а):
Хм, странный вопрос, получаешь файл на основном сайте, а потом уже без участия пользователя, скриптом, закачиваешь файл на резервный сервер.

Спустя 8 часов, 45 минут, 33 секунды (16.03.2008 - 18:39) lenich написал(а):
Вызвать еще раз процедуру copy() или чем вы там копируете с указанием пути на другой сайт?

Спустя 5 часов, 17 минут, 37 секунд (16.03.2008 - 23:57) vlaimir написал(а):
Ну да. Пользователь отправляет форму в которой есть описание архива и сам архив. Сейчас файл загружается только на сайт, с которого работает форма.

Как я понимаю, нужно после закачки архива на сайт подключиться по фтп к другому сайту и скопировать на него архив. Но так получается пользователь будет ждать окончания работы скрипта до тех пор пока файл не скопируется по фтп.

Спустя 7 часов, 21 минута, 41 секунда (17.03.2008 - 07:19) LoneCat написал(а):
Цитата(vlaimir @ 16.3.2008, 23:57) [snapback]35131[/snapback]
Ну да. Пользователь отправляет форму в которой есть описание архива и сам архив. Сейчас файл загружается только на сайт, с которого работает форма.

Как я понимаю, нужно после закачки архива на сайт подключиться по фтп к другому сайту и скопировать на него архив. Но так получается пользователь будет ждать окончания работы скрипта до тех пор пока файл не скопируется по фтп.


Нет конечно, файл можно скопировать уже по обрыву соединения с клиентом.
Цитата
register_shutdown_function
(PHP 4, PHP 5)

register_shutdown_function — Регистрирует функцию, которая выполняется по завершению работы скрипта

Описание
void register_shutdown_function ( callback $function )

Регистрирует функцию function, которая выполнится после завершения работы скрипта.

Возможна регистрация нескольких подобных функций с помощью register_shutdown_function(), при этом функции будут выполняться в том порядке, в каком они были зарегистрированы. Если вы вызовете exit() в одной из зарегистрированных register_shutdown_function() функций, процесс будет остановлен окончательно и последующие зарегистрированные с помощью register_shutdown_function() функции не будут вызваны.

Зарегистрированные register_shutdown_function() функции будут вызваны после того, как запрос выполнен окончательно (включая отсылку любых буферов вывода), соответственно вы не сможете из этих функций вывести что-либо в броузер, используя echo() или print(), или возвратить содержимое какого-либо буфера вывода, используя ob_get_contents().

Спустя 5 часов, 39 минут, 20 секунд (17.03.2008 - 12:58) lenich написал(а):
Вам так и так придется ждать пока все не скопируется иначе не сможете вернуть пользователю ошибки если что то пойдет не так.

Спустя 1 час, 42 минуты, 36 секунд (17.03.2008 - 14:40) LoneCat написал(а):
Цитата(lenich @ 17.3.2008, 12:58) [snapback]35156[/snapback]
Вам так и так придется ждать пока все не скопируется иначе не сможете вернуть пользователю ошибки если что то пойдет не так.

Какие ошибки? Ошибки записи с основного сервера на резервный? По-мойму они к пользователю отношения не имеют smile.gif

Спустя 5 дней, 2 часа, 25 минут, 42 секунды (22.03.2008 - 17:06) vlaimir написал(а):
Сделал. После загрузки файла на сервер выполняется следующий код:
//Данные для доступа по ftp
$ftp_user_name="1";
$ftp_user_pass="1";
$ftp_server="ftp.masterhost.ru";
$path="www/rar/$folder";


// установка соединения
$conn_id = ftp_connect($ftp_server);
ftp_pasv($conn_id, true);

// вход с именем пользователя и паролем
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// проверка соединения
//if ((!$conn_id) || (!$login_result)) {die("Не удалось подключиться к FTP серверу!");}

// Смена директории
if (!ftp_chdir($conn_id, $path))
{
ftp_mkdir($conn_id, $path);
ftp_chdir($conn_id, $path);
}
// Закачка файла
ftp_put($conn_id, $remote_file, $file, FTP_BINARY);

// Закрываем соединение
ftp_close($conn_id);

Нюансы: нужно определить корневую директорию при подключении по фтп сперва, чтобы потом от нее отталкиваться при смене директорий.
Код:
if (!ftp_chdir($conn_id, $path))
{
ftp_mkdir($conn_id, $path);
ftp_chdir($conn_id, $path);
}
предназначен для создания директории, если ее нет, и перехода в нее.

Как бы теперь этот код вызывать после работы скрипта с помощью register_shutdown_function?

Спустя 3 часа, 43 минуты, 28 секунд (22.03.2008 - 20:50) vlaimir написал(а):
Создалось впечатление, что по фтп скрипт как бы качает в отдельные потоки. Скрипт без register_shutdown_function заканчивает работу, а файлы после догружаются по сайтам. Может такое быть?


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.