Загрузка файлов в режиме реального времени через FTP с использованием PHP - PullRequest
1 голос
/ 09 апреля 2011

Можно ли загрузить файл на FTP-сервер с помощью сценария PHP, в то время как этот же сценарий загружает указанный файл откуда-то еще?Поэтому во время загрузки скрипта он должен загружать файл в режиме реального времени.

Ответы [ 3 ]

1 голос
/ 09 апреля 2011

Легко, как торт, в теории. Во-первых, посмотрите здесь функцию FTP: http://www.php.net/manual/en/function.ftp-fput.php. Затем мы используем обертки FOPEN (http://www.php.net/manual/en/wrappers.php), чтобы открыть файл, который мы хотим прочитать, и отправить его поверх.

Чтобы изменить пример php.net:

<?php

// open some file for reading
$file = 'somefile.txt';
$fp = fopen('ftp://user:pass@domain.com/' . $file, 'r');

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// try to upload $file
if (ftp_fput($conn_id, $file, $fp, FTP_ASCII)) {
    echo "Successfully uploaded $file\n";
} else {
    echo "There was a problem while uploading $file\n";
}

// close the connection and the file handler
ftp_close($conn_id);
fclose($fp);

?>

О, и иногда вы можете захотеть неблокировать: http://www.php.net/manual/en/function.ftp-nb-fput.php

0 голосов
/ 09 апреля 2011

Встроенное в PHP расширение FTP может загружать и загружать файлы в асинхронном режиме.

Однако звучит так, как будто выречь идет об использовании этого в качестве метода для передачи файла между двумя различными FTP-соединениями без предварительной загрузки всего файла.Я не уверен, что эти функции поддерживают это.На самом деле, я бы ожидал иначе - есть вероятность, что загрузка может дойти до конца файла, пока идет загрузка, и просто предположить, что он подошел к концу и завершится сам.

Есть некоторые комментариипо ссылке на руководство по загрузке, в которой говорится, что вы можете обмануть некоторые серверы, чтобы они выполняли прямое соединение в пассивном режиме, но я бы взял это с недолгой солью.Оболочки потока FTP .Вы можете открыть две оболочки FTP в качестве дескрипторов файлов, а затем использовать fread для извлечения фрагментов определенного размера с одной стороны и fwrite для записи их на другую сторону.Имейте в виду, что вам нужно сделать это в цикле, так что это не может быть сделано в фоновом режиме, как методы расширения FTP.Это также, вероятно, будет медленным.

0 голосов
/ 09 апреля 2011

PHP может работать с протоколом ftp , вот пример из руководства php .

PHP поддерживает разветвление процессов, вы можете проверить pnctl .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...