<?php
class TaskQueue
{
private $queue = [];
private $maxSize;
public function __construct(int $maxSize = 100)
{
$this->maxSize = $maxSize;
}
public function enqueue(array $record): void
{
// Add task to the queue
$this->queue[] = $record;
// Limit queue size
if (count($this->queue) > $this->maxSize) {
$this->dequeue(); // Remove oldest task if queue is full
}
}
public function dequeue(): array|null
{
// Remove and return the oldest task (FIFO)
if (empty($this->queue)) {
return null; // Queue is empty
}
return array_shift($this->queue);
}
public function isEmpty(): bool
{
return empty($this->queue);
}
public function size(): int
{
return count($this->queue);
}
}
// Example Usage:
$queue = new TaskQueue(20); // Limit queue to 20 items
//Simulate adding records
for ($i = 0; $i < 30; $i++) {
$record = ['id' => $i, 'data' => 'some data'];
$queue->enqueue($record);
}
// Process tasks from the queue
while (!$queue->isEmpty()) {
$task = $queue->dequeue();
if ($task) {
// Process the task (e.g., save to database, process data)
echo "Processing task: " . $task['id'] . "\n";
// Simulate processing time
usleep(500000); // 0.5 seconds
}
}
?>
Add your comment