Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 07.01.2018 11:25:09

Получить данные по локальной ссылке

Есть ссылка вида /aaa/bbb/ccc.png
Нужно получить данные с этой ссылки. Само собой можно сделать обычный file_get_contents и передать туда текущий хост + этот путь. Однако в этом случае, как я понимаю, будет создано отдельное соединение для получения данных (т.е. запрос данных будет выполнен как-будто с внешнего сайта). Может можно сделать такой запрос средствами Laravel чтобы обойтись без внешнего запроса?

Не в сети

#2 07.01.2018 11:29:43

Re: Получить данные по локальной ссылке

Локальный файл? Может что-то вроде:

PHP
File::get(public_path($link))

Не в сети

#3 07.01.2018 11:44:02

Re: Получить данные по локальной ссылке

Не подойдет. Ссылка может вызывать какой это php скрипт, а данная конструкция подразумевает получение статического файла.

Судя по всему вопрос у меня не очень умный, наверное проще все-таки через file_get_contents

Не в сети

#4 07.01.2018 11:47:44

Re: Получить данные по локальной ссылке

Если это локальный скрипт, его и вызывай, чтобы получить результат.

Не в сети

#5 07.01.2018 12:19:13

Re: Получить данные по локальной ссылке

Это может быть что угодно. И локальный скрипт, и локальный ресурс. да и сам скрипт может вызывать шаблонизатор и тому подобное.
file_get_contents нормально сработает, но он вызовет HTTP запрос. Думал есть возможность сделать что-то типа

$req = new Request('моя ссылка')
$content = $req->run();

И в $content данные запрошенной ссылки

Не в сети

#6 07.01.2018 12:33:11

Re: Получить данные по локальной ссылке

В общем оказалось что примерно по описанной мной схеме и работает. Вот решение

// А может это статический ресурс?
$filepath = public_path() . $url;
if( file_exists($filepath) ) {
	$ret = file_get_contents($filepath);
} else {
	// Ну значит это скрипт какой-то и нужно его выполнить
	$request = \Request::create($url, 'GET');
	$ret = \Route::dispatch($request)->getContent();
}

upd: Добавил вариант если запрашивается статический ресурс. В этом случае Route::dispatch($request) ничего не возвращает.

Изменено shasoft (07.01.2018 13:24:24)

Не в сети

Подвал раздела