1. <?php
  2. class QueuePerformanceTester {
  3. private $queue_name;
  4. private $num_items;
  5. private $num_runs;
  6. private $results = [];
  7. private $fallback_queue_name; // For fallback logic
  8. public function __construct(string $queue_name, int $num_items, int $num_runs, string $fallback_queue_name = null) {
  9. $this->queue_name = $queue_name;
  10. $this->num_items = $num_items;
  11. $this->num_runs = $num_runs;
  12. $this->fallback_queue_name = $fallback_queue_name;
  13. }
  14. public function test() {
  15. $start_time = microtime(true);
  16. for ($i = 0; $i < $this->num_runs; $i++) {
  17. $this->run_test();
  18. }
  19. $end_time = microtime(true);
  20. $total_time = $end_time - $start_time;
  21. $this->results['total_time'] = $total_time;
  22. $this->results['time_per_run'] = $total_time / $this->num_runs;
  23. $this->results['queue_name'] = $this->queue_name;
  24. $this->results['num_items'] = $this->num_items;
  25. $this->results['num_runs'] = $this->num_runs;
  26. if ($this->fallback_queue_name) {
  27. $this->results['fallback_queue_name'] = $this->fallback_queue_name;
  28. }
  29. return $this->results;
  30. }
  31. private function run_test() {
  32. // Simulate enqueuing items
  33. $queue = new \stdClass(); // Replace with your actual queue implementation
  34. for ($i = 0; $i < $this->num_items; $i++) {
  35. $queue->enqueue("item_" . $i); //Replace with your enqueue method.
  36. }
  37. // Simulate processing items
  38. $processed_count = 0;
  39. while (!$queue->isEmpty()) { //Replace with your queue's is_empty method
  40. $queue->dequeue(); //Replace with your dequeue method.
  41. $processed_count++;
  42. }
  43. }
  44. public function getResults(): array {
  45. return $this->results;
  46. }
  47. }
  48. ?>

Add your comment