Мне просто интересно, как ApiCommand.php работает в laravel?
Это мой ApiCommand.php
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Storage;
use DB;
class ApiCommand extends Command {
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'api:command';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
include(app_path() . '/includes/HelloAnalytics.php');
include(app_path() . '/includes/DeepCrawl.php');
include(app_path() . '/includes/Uptime.php');
}
Это мой HelloAnalytics.php
<?php
// Load the Google API PHP Client Library.
//require_once '/home/vagrant/apps/pc-reporting-tool/vendor/autoload.php';
include(base_path() . '/vendor/autoload.php');
$results = array();
$otherResults = array();
$analytics = initializeAnalytics();
// there are two websites in google analytics account so $i<2 is used
for($i=0;$i<2;$i++){
$profile[$i] = getFirstProfileId($analytics,$i);
//**** get the property name
$propertyName[$i] = $profile[$i][0];
/* results of a profile is saved with each iteration. The loop iterates
until all the profile in google analytics account is save */
$results[$i] = getResults($analytics, $profile[$i][1]);
$otherResults[$i] = getOtherResults($analytics, $profile[$i][1]);
}
function initializeAnalytics(){
// Creates and returns the Analytics Reporting service object.
// Use the developers console and download your service account
$KEY_FILE_LOCATION = app_path() . '/includes/GoogleAnalytics.json';
// Create and configure a new client object.
$client = new Google_Client();
$client->setApplicationName("Hello Analytics Reporting");
$client->setAuthConfig($KEY_FILE_LOCATION);
$client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
$analytics = new Google_Service_Analytics($client);
return $analytics;
}
function getFirstProfileId($analytics,$index) {
// Get the user's first view (profile) ID.
// Get the list of accounts for the authorized user.
$accounts = $analytics->management_accounts->listManagementAccounts();
if (count($accounts->getItems()) > 0) {
$items = $accounts->getItems();
$firstAccountId = $items[0]->getId();
// Get the list of properties for the authorized user.
$properties = $analytics->management_webproperties
->listManagementWebproperties($firstAccountId);
if (count($properties->getItems()) > 0) {
$items = $properties->getItems();
$firstPropertyId = $items[$index]->getId();
//*******************
$firstPropertyName = $items[$index]->getName();
// Get the list of views (profiles) for the authorized user.
$profiles = $analytics->management_profiles
->listManagementProfiles($firstAccountId, $firstPropertyId);
if (count($profiles->getItems()) > 0) {
$items = $profiles->getItems();
//***** stores Property name and Profile Id as an array
$info = [];
$info[0] = $firstPropertyName;
$info[1] = $items[0]->getId();
// Return the first view (profile) ID.
//return $items[0]->getId();
return $info;
} else {
throw new Exception('No views (profiles) found for this user.');
}
} else {
throw new Exception('No properties found for this user.');
}
} else {
throw new Exception('No accounts found for this user.');
}
}
function getResults($analytics, $profileId) {
// Calls the Core Reporting API and queries for the number of sessions
// for the last seven days.
return $analytics->data_ga->get(
'ga:' . $profileId,
'30daysAgo',
'yesterday',
'ga:users',
['dimensions'=>'ga:deviceCategory,ga:browser'] */
['dimensions'=>'ga:day']
);
}
function getOtherResults($analytics, $profileId) {
// Calls the Core Reporting API and queries for the number of sessions
// for the last seven days.
return $analytics->data_ga->get(
'ga:' . $profileId,
'30daysAgo',
'yesterday',
'ga:users,ga:newUsers,ga:sessions,ga:sessionsPerUser,ga:pageviews,ga:pageviewsPerSession,ga:avgSessionDuration,ga:bounceRate'
);
}
function printResults($results) {
// Parses the response from the Core Reporting API and prints
// the profile name and total sessions.
if (count($results->getRows()) > 0) {
// Get the profile name.
$profileName = $results->getProfileInfo()->getProfileName();
// Get the entry for the first entry in the first row.
$rows = $results->getRows();
$sessions = $rows[1][0];
// Print the results.
//print "First view (profile) found: $profileName\n";
//print "Total visits: $sessions\n";
//print "Total users: $users\n";
} else {
print "No results found.\n";
}
}
Это мой Uptime.php
<?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 => "api_key=XXXX",
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);
}
?>
DeepCrawl.php еще не завершен.
Моя проблема в том, что я хочу использовать ApiCommand и использовать эту функцию дескриптора, чтобы собрать все данные для моего времени работы Google Analytics и глубокого сканирования, но я не знаю, как это работает. Извините за мою плохую грамматику, потому что я к ней не привык, и я просто новичок в среде программирования Надеюсь, кто-нибудь может мне помочь, как работает ApiCommands.php. Заранее спасибо.