|
|
|
| Доброго времени суток.
-----------------------------------
Помогите решить задачу:
-----------------------------------
Дано:
-2 хостинга, Х1 и Х2 (данные и доступ имеется)
-программа, которая каждые 30 минут сохраняет файл file.txt на Х1
|
Условия:
Разместить скрипт копирования на Х2 нельзя, потому
что хостингом запрещены наверное все запросы к удаленному
файлу (fsocopen, copy, curl, fopen и т.д) + нет Крона (т.е
запускать копирование автоматом нет возможности)
|
Вопрос:
Как скопировать файл с Х1 на Х2?
|
| |
|
|
|
|
|
|
|
для: chexov
(20.05.2009 в 05:11)
| | Возможно узнать как соединиться с сервером X2 и есть ли доступ к какому то каталогу на запись. SSH, ftp, или другая иная служба которая позволяет сохранить файл на сервере? | |
|
|
|
|
|
|
|
для: KerBerOS
(20.05.2009 в 07:07)
| | дело в том, что мне нужно сохранять каким то образом в любой папке сайта, т.е в любой папке htdocs (или WWW), а ftp доступ к любой папке настроить нет возможности, под ftp соединение выделяется спец папка которая лежит вне папки htdocs
вот некоторые соображения:
<?
$file = file_get_contents('file.txt');
$fp = fsockopen(target, 80);
fwrite($fp, "POST /script.php HTTP/1.0\r\nContent-Type: multipart/form-data\r\nContent-Length: ".
strlen($file)."\r\n\r\n".$file);
?>
|
это размещаем на Х1, а файл script.php размещаем на Х2 в котором собственно принимаем файл отправленный с Х1, проблема с заголовком, У кого какие соображения? | |
|
|
|
|
|
|
|
для: chexov
(20.05.2009 в 07:30)
| | вобщем решил проблему с помощью CURL, кому интересно выкладываю:
На Х1 размещаем скрипт:
<?php
// Задаем скрипт на X2, который примет наш запрос и обработает его
$url = 'http://X2/import.php';
// Указываем файл, который мы хотим передать сайту B
// Если файл находится не в текущей дирректории, то необходимо
// указать путь до файла
$file = 'file.txt';
// Узнаем размер передаваемого файла
$filesize = filesize($file);
// Узнаем имя файла (в случае, если в $file указан полный путь до файла)
$pathinfo = pathinfo($file);
$filename = $pathinfo['basename'];
// Открываем передаваемый файл на чтение
// для дальнейшей его передачи
$fp = fopen($file, 'r');
// Инициализируем сеанс CURL
$ch = curl_init();
// Задаем параметры для открытого сеанса CURL
// Указываем URL скрипта, который примет наш запрос
// К имени скрипта добавляем переменную, содержащую имя передаваемого файла
// Чтобы это имя было доступно в принимающем скрипте из массива $_GET
curl_setopt($ch, CURLOPT_URL, $url . '?filename=' . $filename);
// Указываем файл (а вернее дескриптор открытого на чтение файла), который собираемся передать
curl_setopt($ch, CURLOPT_INFILE, $fp);
// Указываем предполагаемый размер отправляемого файла
curl_setopt($ch, CURLOPT_INFILESIZE, $filesize);
// Указываем, что файл передается методом PUT
curl_setopt($ch, CURLOPT_PUT, true);
// Указываем, что будет производиться закачка на удаленный сервер
curl_setopt($ch, CURLOPT_UPLOAD, true);
// Выполняем запрос CURL
curl_exec($ch);
// Завершаем сеанс CURL
curl_close($ch);
?>
|
Далее необходимо организовать прием файла на Х2.
Для этого в скрипте import.php, находящегося на Х2, из массива $_GET мы должны получить название файла, а из входного потока - содержимое файла:
<?php
// Определяем имя файла
// Если не определено, задаем как unknow.dat
$filename = (isset($_GET['filename'])) ? $_GET['filename'] : 'unknow.dat';
// Получаем содержимое входящего потока
$content = file_get_contents('php://input');
// Записываем содержимое потока в файл
$file = fopen($filename, 'w+');
fwrite($file, $content);
fclose($file);
?>
|
Информация взята с http://www.spravkaweb.ru/php/sovet/putfile | |
|
|
|