Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Автоматичная закачка файла - альтернатива FTP ? (https://forum.antichat.xyz/showthread.php?t=200568)

^_WhitE_DeMoN_^ 30.04.2010 05:13

Автоматичная закачка файла - альтернатива FTP ?
 
Таак, написал automatic remote backup tool, PHP скрипт дампит MySQL базы, записывает их локально и закачивает на удаленный FTP...

Только вот проблем...
Хост ругается: ftp_put() [function.ftp-put]: php_connect_nonb() failed: Operation now in progress (115) (2)

Саппорт отвечает: We do not allow the FTP functions to be used against remote FTP servers.

Так вот ищу простую альтернативу ftp_*, есть идея передавать имя файла (которое генерируется разное!) GET запросом удаленному скрипту, а тот скачает и запишет файл.

Но как реализовать, вообще не думается :confused:
Буду благодарен за куски кода, примеры, обяснения...

Спасибо что дочитали :D

LStr1ke 30.04.2010 06:08

Ну например так:

1 хост, который делает дамп:
PHP код:

<?php
/* 
{
Тут делаешь дамп и сораняешь файл локально
}
*/

$damp_file "db.sql"//Тут имя файл который сдампился
echo file_get_contents("http://my_server_2/saver.php?file=".$damp_file); //Тут ты передаешь хосту №2 какой файл ему скачивать
?>

Хост №2 который скачивает
PHP код:

<?php
$server_1 
"http://server_nomer_1/"//Тут адрес сервера откуда скачивать
$dump_file $_GET['file'];
$file_prefix "saved_";
if(
file_put_contents($file_prefix.$dump_file,file_get_contents($server_1.$dump_file))) {
echo 
"File_saved!";
}else echo 
"File dont saved";
?>

Ну впринципе и все. 1 скрипт напишет File_saved! если файл успешно скачен вторым сервером. На втором сервере появится файл saved_db.sql

Ну думаю схема понятна. )))

Если файл большой, то во втором скрипте скачивай "побайтово".
функция fread()
//практикуем убийство серверов?)))

^_WhitE_DeMoN_^ 30.04.2010 17:58

Ожидается что будет большой, и еще 50 штук таких... Базы phpBB3 =)
Иначе все понятно, спасибо огромное, щас в репу стукну

Няя, я не убиец =) Я наемный убиец =) ...а так, сайто строитель...

Deathdreams 30.04.2010 22:50

скрипт, который дампит (в переменной $server указать путь до скрипта, который скачивает):
Код:

<?php

/*тут дамп в переменную $dump*/

$server = 'http://fsdfdsf.ru/example.php'; //путь до второго файла

@ini_set('max_execution_time', 0);
$name = "dump".date("YmdHis").".sql";
if( @file_put_contents( $name, $dump ) )
{

        echo 'Сохранили дамп...'.PHP_EOL;
        $path = $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"].$name;
        $content = file_get_contents( $server.'?put='.urlencode($path) );
        if( $content == 'success' ) echo 'Сервер успешно сохранил наш дамп.'.PHP_EOL;
        else echo 'Серверу не удалось сохранить наш дамп.'.PHP_EOL;

} else echo 'Дамп сохранить не удалось. Проверь chmod.';

?>

скрипт для сохранения дампа:
Код:

<?php

$dir = '/dumps/'; //папка с дампами

$file = "http://".stripslashes(urldecode(trim($_GET['put'])));
if( file_put_contents( $dir."dump".date("Y-m-d+H-i-s"), file_get_contents($file) ) )
{

die('success');

} else die('false');


?>

/*писалось на скорую руку, подправьте если что не так*/

Gifts 01.05.2010 15:10

^_WhitE_DeMoN_^ если блокируются только функции ftp_*, напишите свой класс на сокетах, благо FTP - простейший протокол

Или еще проще:
PHP код:

file_put_contents("ftp://user:password@ftp.server.ru/file.txt"file_get_contents('имя_локального_файла')); 


^_WhitE_DeMoN_^ 02.05.2010 02:56

Цитата:

Сообщение от Gifts
Или еще проще:
PHP код:

file_put_contents("ftp://user:password@ftp.server.ru/file.txt"file_get_contents('имя_локального_файла')); 


Удивил, проще некуда! Но, пока сделал первый вариант... И хз че еще у хостера запрещенно ;)

^_WhitE_DeMoN_^ 09.05.2010 01:39

Цитата:

Сообщение от LStr1ke
Ну например так:

1 хост, который делает дамп:
PHP код:

<?php
/* 
{
Тут делаешь дамп и сораняешь файл локально
}
*/

$damp_file "db.sql"//Тут имя файл который сдампился
echo file_get_contents("http://my_server_2/saver.php?file=".$damp_file); //Тут ты передаешь хосту №2 какой файл ему скачивать
?>

Хост №2 который скачивает
PHP код:

<?php
$server_1 
"http://server_nomer_1/"//Тут адрес сервера откуда скачивать
$dump_file $_GET['file'];
$file_prefix "saved_";
if(
file_put_contents($file_prefix.$dump_file,file_get_contents($server_1.$dump_file))) {
echo 
"File_saved!";
}else echo 
"File dont saved";
?>

Ну впринципе и все. 1 скрипт напишет File_saved! если файл успешно скачен вторым сервером. На втором сервере появится файл saved_db.sql

Ну думаю схема понятна. )))

Если файл большой, то во втором скрипте скачивай "побайтово".
функция fread()
//практикуем убийство серверов?)))

Хост ругается:
Цитата:

file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration (2)
Идеи :confused:

^_WhitE_DeMoN_^ 12.05.2010 03:26

У никого ?

m0Hze 12.05.2010 08:29

Цитата:

Сообщение от ^_WhitE_DeMoN_^
У никого ?

Помоему, вот этот параметр в php.ini
allow_url_fopen=on;

^_WhitE_DeMoN_^ 12.05.2010 10:11

Нет доступа к php.ini
Ищу обход...


Время: 19:36