<?php
class QueuePerformanceTester {
private $queue_name;
private $num_items;
private $num_runs;
private $results = [];
private $fallback_queue_name; // For fallback logic
public function __construct(string $queue_name, int $num_items, int $num_runs, string $fallback_queue_name = null) {
$this->queue_name = $queue_name;
$this->num_items = $num_items;
$this->num_runs = $num_runs;
$this->fallback_queue_name = $fallback_queue_name;
}
public function test() {
$start_time = microtime(true);
for ($i = 0; $i < $this->num_runs; $i++) {
$this->run_test();
}
$end_time = microtime(true);
$total_time = $end_time - $start_time;
$this->results['total_time'] = $total_time;
$this->results['time_per_run'] = $total_time / $this->num_runs;
$this->results['queue_name'] = $this->queue_name;
$this->results['num_items'] = $this->num_items;
$this->results['num_runs'] = $this->num_runs;
if ($this->fallback_queue_name) {
$this->results['fallback_queue_name'] = $this->fallback_queue_name;
}
return $this->results;
}
private function run_test() {
// Simulate enqueuing items
$queue = new \stdClass(); // Replace with your actual queue implementation
for ($i = 0; $i < $this->num_items; $i++) {
$queue->enqueue("item_" . $i); //Replace with your enqueue method.
}
// Simulate processing items
$processed_count = 0;
while (!$queue->isEmpty()) { //Replace with your queue's is_empty method
$queue->dequeue(); //Replace with your dequeue method.
$processed_count++;
}
}
public function getResults(): array {
return $this->results;
}
}
?>
Add your comment