Загрузка больших файлов на сервер (без блокировки)

Поэтому я работаю над приложением php, которое должно взаимодействовать с приложением 4d. Приложение 4d использует веб-сервис SOAP для внешней связи.

Веб-сервис SOAP имеет функцию, позволяющую загружать файлы в приложение 4d. Из-за неработоспособности функции загрузки файлов веб-службы приложения 4d мы реализовали индикатор выполнения для загрузки файла на веб-сервер, а затем, после того, как это успешно выполнено, попробуйте отправить файл на сервер приложений 4d. Но для клиента это было бы нехорошо, поскольку человеку нужно было бы дождаться начальной загрузки файла на сервер, а затем снова при выполнении функции загрузки файла, чтобы передать файл с веб-сервера на сервер приложения 4d.

Мой вопрос: есть ли способы обработать загрузку файла, но неблокирующим способом? Может быть, даже обходя функцию SOAP все вместе.

ОБНОВЛЕНИЕ: я подумал, может быть, использовать что-то вроде RabbitMQ, чтобы поставить в очередь каждый элемент загрузки файла, а затем обработать позже, используя скрипт или что-то, что отделено от приложения, чтобы оно не блокировало приложение.

1 ответ

Решение

Ваше предлагаемое решение будет правильным способом решения; примите загрузку через обычное веб-приложение, используя загрузку файла HTML5 или swfupload, чтобы разрешить показ индикатора выполнения для загрузки, затем сохраните его локально и поставьте в очередь задачу Gearman или RabbitMQ, которую рабочий обрабатывает позже.

Рабочий получит файл локально и загрузит его в удаленную службу (4d / SOAP), а затем установит соответствующий статус в базе данных после завершения, чтобы пользователь знал, когда файл был обработан и добавлен на фактический сервер.

Другие вопросы по тегам