Я пытаюсь выполнить запрос к веб-сервису для загрузки больших файлов на мой сервер. Мое веб-приложение в Laravel 4, и я использую жадность, чтобы сделать запрос.
Проблема в том, что после запуска загрузки файла из удаленной службы я не могу выполнить какой-либо запрос к своему приложению, пока не будет завершен ответ на загрузку.
Вот пример моего кода:
public function download($id, $url, $filename)
{
// some data for request
$request = $httpClient->get($downloadFileUrl, array(
'future' => true,
'cookies' => true,
'save_to' => $filename
)
);
return $cookieRequest;
}
В прошлом я использовал exec для запуска сценариев curl или wget для загрузки файлов на сервер. Но я хотел бы иметь больше контроля над запросами и ответами.
Любая помощь будет оценена,
Спасибо
Вы могли бы использовать рабочие очереди запустить загрузку в фоновом режиме:
Queue::push(function($job)
{
$request = $httpClient->get($downloadFileUrl, array(
'future' => true,
'cookies' => true,
'save_to' => $filename
));
$job->delete();
});
Вот хорошая статья о том, как Настройка Laravel с Beanstalkd, но вы также можете использовать другие, такие как IronMQ, Amazon SQS, Redis.
Других решений пока нет …