如何将 php 文件导入控制器并收集数据
How to import php file to your controller and gather data
我的控制器。
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/apigetMonitors()
方法
<?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 类型。真的很困惑我在这里做什么新程序员。有人可以解释我是否走在正确的道路上,或者是否可以在控制器中进行。提前致谢。
我可以建议稍微不同的解决方案:
在单独的 console command and run this command each minute (for example, as a cron job).
中提取您的 curl 代码
命令结果保存到database/file/memory。
在您的 showMonthlyReport()
中参考现有结果。
好处:
- 这样您就不必在每个
showMonthlyReport()
上等待卷曲结果。所有代码将 运行 异步
- 所有错误处理都集中在一个地方
- 命令可测试
我的控制器。
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/apigetMonitors()
方法
<?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 类型。真的很困惑我在这里做什么新程序员。有人可以解释我是否走在正确的道路上,或者是否可以在控制器中进行。提前致谢。
我可以建议稍微不同的解决方案:
在单独的 console command and run this command each minute (for example, as a cron job).
中提取您的 curl 代码
命令结果保存到database/file/memory。
在您的
showMonthlyReport()
中参考现有结果。
好处:
- 这样您就不必在每个
showMonthlyReport()
上等待卷曲结果。所有代码将 运行 异步 - 所有错误处理都集中在一个地方
- 命令可测试