laravel — Как импортировать php файл в ваш контроллер и собирать данные

Мой контроллер.

public function showMonthlyReport($site_id, $report_id){

$reports = Report::where('report_id', $report_id)->firstOrFail();

$uptime = ???

return view('records', compact('site_id', 'report_id', 'reports', 'uptime'));

}

И моя ссылка UptimeRobot.php https://uptimerobot.com/api getMonitors()метод

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.uptimerobot.com/v2/getMonitors",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "Your Api Key",
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
"content-type: application/x-www-form-urlencoded"),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
$data = json_decode($response);
$custom_uptime = ($data->monitors[0]->custom_uptime_ratio);
$uptime = explode("-",$custom_uptime);
}

?>

ApiCommand.php

public function handle()
{
include(app_path() . '/Includes/DeepCrawl.php');
include(app_path() . '/Includes/Uptime.php');
include(app_path() . '/Includes/HelloAnalytics.php');

$stringData = ApiCommand::drawGraph($uptime, $dates, $users, $otherResultsRows, $array_issues, $array_pages_breakdown, $array_uncrawled_url, $array_non_200_pages, $array_orphaned_pages, $array_non_indexable_pages, $array_crawl_source_gap, $array_https_http);

Storage::disk('local')->put('hello.txt', $stringData);

}

В настоящее время строит веб-приложение laravel.

Мне просто интересно, как я могу собрать данные из uptimerobot. Я собираюсь использовать свой контроллер, чтобы передать его на мой взгляд, но я не знаю как. У меня есть код ниже с типом curl php выше. Действительно запутался, что я здесь делаю новым программистом. Может кто-нибудь объяснить, если я на правильном пути или это можно сделать в контроллере. Заранее спасибо.

0

Решение

Я могу предложить немного другое решение:

  1. Извлеките свой код curl в отдельном консольная команда и запускайте эту команду каждую минуту (например, как хрон работа).

  2. Результат выполнения команды сохранить в базу данных / файл / память.

  3. В вашем showMonthlyReport() обратитесь к существующему результату.

Выгоды:

  • Таким образом, вам не нужно будет ждать, пока ваш результат скручивания на каждом showMonthlyReport(), Весь код будет работать асинхронно
  • Все ошибки обработки будут в одном месте
  • Команда тестируема
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]