1. <?php
  2. class TaskQueue
  3. {
  4. private $queue = [];
  5. private $maxSize;
  6. public function __construct(int $maxSize = 100)
  7. {
  8. $this->maxSize = $maxSize;
  9. }
  10. public function enqueue(array $record): void
  11. {
  12. // Add task to the queue
  13. $this->queue[] = $record;
  14. // Limit queue size
  15. if (count($this->queue) > $this->maxSize) {
  16. $this->dequeue(); // Remove oldest task if queue is full
  17. }
  18. }
  19. public function dequeue(): array|null
  20. {
  21. // Remove and return the oldest task (FIFO)
  22. if (empty($this->queue)) {
  23. return null; // Queue is empty
  24. }
  25. return array_shift($this->queue);
  26. }
  27. public function isEmpty(): bool
  28. {
  29. return empty($this->queue);
  30. }
  31. public function size(): int
  32. {
  33. return count($this->queue);
  34. }
  35. }
  36. // Example Usage:
  37. $queue = new TaskQueue(20); // Limit queue to 20 items
  38. //Simulate adding records
  39. for ($i = 0; $i < 30; $i++) {
  40. $record = ['id' => $i, 'data' => 'some data'];
  41. $queue->enqueue($record);
  42. }
  43. // Process tasks from the queue
  44. while (!$queue->isEmpty()) {
  45. $task = $queue->dequeue();
  46. if ($task) {
  47. // Process the task (e.g., save to database, process data)
  48. echo "Processing task: " . $task['id'] . "\n";
  49. // Simulate processing time
  50. usleep(500000); // 0.5 seconds
  51. }
  52. }
  53. ?>

Add your comment