Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Удаленная загрузка файла
 
 автор: chexov   (20.05.2009 в 05:11)   письмо автору
 
 

Доброго времени суток.
-----------------------------------
Помогите решить задачу:
-----------------------------------
Дано:
-2 хостинга, Х1 и Х2 (данные и доступ имеется)
-программа, которая каждые 30 минут сохраняет файл file.txt на Х1

Условия:
Разместить скрипт копирования на Х2 нельзя, потому 
что хостингом запрещены наверное все запросы к удаленному 
файлу (fsocopen, copy, curl, fopen и т.д) + нет Крона (т.е 
запускать копирование автоматом нет возможности)

Вопрос:
Как скопировать файл с Х1 на Х2?

  Ответить  
 
 автор: KerBerOS   (20.05.2009 в 07:07)   письмо автору
 
   для: chexov   (20.05.2009 в 05:11)
 

Возможно узнать как соединиться с сервером X2 и есть ли доступ к какому то каталогу на запись. SSH, ftp, или другая иная служба которая позволяет сохранить файл на сервере?

  Ответить  
 
 автор: chexov   (20.05.2009 в 07:30)   письмо автору
 
   для: KerBerOS   (20.05.2009 в 07:07)
 

дело в том, что мне нужно сохранять каким то образом в любой папке сайта, т.е в любой папке htdocs (или WWW), а ftp доступ к любой папке настроить нет возможности, под ftp соединение выделяется спец папка которая лежит вне папки htdocs

вот некоторые соображения:
<?
$file 
file_get_contents('file.txt');
$fp fsockopen(target80);
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   (21.05.2009 в 04:52)   письмо автору
 
   для: 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($chCURLOPT_URL$url '?filename=' $filename);
// Указываем файл (а вернее дескриптор открытого на чтение файла), который собираемся передать
curl_setopt($chCURLOPT_INFILE$fp);
// Указываем предполагаемый размер отправляемого файла
curl_setopt($chCURLOPT_INFILESIZE$filesize);
// Указываем, что файл передается методом PUT
curl_setopt($chCURLOPT_PUTtrue);
// Указываем, что будет производиться закачка на удаленный сервер
curl_setopt($chCURLOPT_UPLOADtrue);
// Выполняем запрос 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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования