Отправить файл со страницы PHP на другую - PullRequest
4 голосов
/ 15 декабря 2011

Мне нужно отправить файл с одной страницы PHP (на которую клиент загружает свои файлы) на другую страницу PHP на другом сервере, где файлы будут окончательно сохранены.

Для связи сейчас я использую протокол JSON-RPC;Разумно ли отправлять файл таким способом?

$string = file_get_contents("uploaded_file_path");

отправьте строку на удаленный сервер, а затем

file_put_contents("file_name", $recieved_string_from_remte);

Я понимаю, что этот подход занимает вдвое больше времени, чем загрузка непосредственно ввторой сервер.

Спасибо

[править]

подробности:

Мне нужно написать сервис, позволяющий некоторые php (можетбыть пользователем joomla) использовать простой API для загрузки файлов и отправки на мой сервер некоторых других данных, которые анализируют их, помещают в базу данных и отправляют ответ

[re edit]

мне нужно создать простой метод, позволяющий конечному пользователю сделать это, который будет использовать этот интерфейс на сервере 1 (загрузка), использовать php и stop, поэтому удаленное монтирование ssh или странные забавные вещи

Ответы [ 4 ]

1 голос
/ 16 декабря 2011

Используйте SSHFS на компьютере 1, чтобы сопоставить путь к файлу с машиной 2 (используя SSH) и сохранить загруженный файл на машину 2. После загрузки файла запустите машину 2, чтобы выполнить обработку, и отправьте отчет как обычно.

Это позволит вам загружать данные на компьютер 1, но на самом деле передавать его на HD-диск компьютера 2, чтобы его можно было обрабатывать быстрее на этом компьютере.

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

1 голос
/ 15 декабря 2011

На вашем месте я отправил бы файл непосредственно на второй сервер и сохранил бы его имя и / или некоторый хэш имени файла (для упрощения поиска) в базе данных на первом сервере.

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

1 голос
/ 16 декабря 2011

Если вам не нужны файлы сразу после их получения (для обработки и т. Д.), Вы можете сохранить их все в одной папке на сервере 1 и настроить cron для передачи содержимого папки на сервер 2. Всепри условии, что вы используете серверы Linux, это один из самых безопасных и эффективных способов сделать это.

Для получения дополнительной информации, пожалуйста, посмотрите на http://en.wikipedia.org/wiki/Secure_copy или google scp.

1 голос
/ 15 декабря 2011

Как я уже сказал в своем комментарии, ЭТО НЕ РЕКОМЕНДУЕТСЯ, но в любом случае ....

Вы можете использовать сокеты, читая побайтно: http://php.net/manual/en/book.sockets.php

или вы можете использовать ftp:http://php.net/manual/en/book.ftp.php

В любом случае, проблема в вашем приложении заключается в выполнении процесса асинхронным или синхронизированным с пользовательской навигацией?Я действительно предлагаю вам передать его по sql или ftp и дать пользователю ответ на основании другого события (например, просмотр файла, затем электронная почта и т. Д.) Или с использованием sql (двоичный файл, BLOB-объект и т. Д.)

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