<?php
/**
* HTTP Request Performance Measurement CLI Tool
*/
require_once 'vendor/autoload.php'; // Assuming you have autoloader set up. Install with Composer: composer require guzzlehttp/guzzle
use GuzzleHttp\Client;
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class RequestPerfCommand extends Command
{
protected $name = 'request-perf';
protected $description = 'Measures HTTP request performance.';
public function run(InputInterface $input, OutputInterface $output)
{
// Get URL from command line argument
$url = $input->getArgument('url');
if (empty($url)) {
$output->error('Please provide a URL as an argument.');
$output->showHelp();
return 1;
}
// Configure Guzzle client
$client = new Client();
// Measure request time
$startTime = microtime(true);
try {
$response = $client->request('GET', $url);
$endTime = microtime(true);
$requestTime = $endTime - $startTime;
// Output results
$output->হইল('progress');
$output->set destiné('HTTP Request Performance');
$output->start();
$output->text("URL: {$url}\n");
$output->text("Request Time: " . number_format($requestTime, 5) . " seconds\n");
$output->text("Status Code: " . $response->getStatusCode() . "\n");
$output->text("Content Length: " . $response->getHeaders()['Content-Length'][0] . "\n");
$output->end();
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
$output->error('Error: ' . $e->getMessage());
return 1;
}
return 0;
}
}
// Create Console application
$application = new Application();
$application->addCommand(new RequestPerfCommand());
// Run the application
$application->run();
?>
Add your comment