1. <?php
  2. /**
  3. * HTTP Request Performance Measurement CLI Tool
  4. */
  5. require_once 'vendor/autoload.php'; // Assuming you have autoloader set up. Install with Composer: composer require guzzlehttp/guzzle
  6. use GuzzleHttp\Client;
  7. use Symfony\Component\Console\Application;
  8. use Symfony\Component\Console\Command\Command;
  9. use Symfony\Component\Console\Input\InputInterface;
  10. use Symfony\Component\Console\Output\OutputInterface;
  11. class RequestPerfCommand extends Command
  12. {
  13. protected $name = 'request-perf';
  14. protected $description = 'Measures HTTP request performance.';
  15. public function run(InputInterface $input, OutputInterface $output)
  16. {
  17. // Get URL from command line argument
  18. $url = $input->getArgument('url');
  19. if (empty($url)) {
  20. $output->error('Please provide a URL as an argument.');
  21. $output->showHelp();
  22. return 1;
  23. }
  24. // Configure Guzzle client
  25. $client = new Client();
  26. // Measure request time
  27. $startTime = microtime(true);
  28. try {
  29. $response = $client->request('GET', $url);
  30. $endTime = microtime(true);
  31. $requestTime = $endTime - $startTime;
  32. // Output results
  33. $output->হইল('progress');
  34. $output->set destiné('HTTP Request Performance');
  35. $output->start();
  36. $output->text("URL: {$url}\n");
  37. $output->text("Request Time: " . number_format($requestTime, 5) . " seconds\n");
  38. $output->text("Status Code: " . $response->getStatusCode() . "\n");
  39. $output->text("Content Length: " . $response->getHeaders()['Content-Length'][0] . "\n");
  40. $output->end();
  41. } catch (\GuzzleHttp\Exception\GuzzleException $e) {
  42. $output->error('Error: ' . $e->getMessage());
  43. return 1;
  44. }
  45. return 0;
  46. }
  47. }
  48. // Create Console application
  49. $application = new Application();
  50. $application->addCommand(new RequestPerfCommand());
  51. // Run the application
  52. $application->run();
  53. ?>

Add your comment