1. <?php
  2. class TaskQueue {
  3. private $tasks = [];
  4. public function enqueue(string $taskName, int $time, array $flags = []): void {
  5. // Add task to the queue
  6. $this->tasks[] = [
  7. 'name' => $taskName,
  8. 'time' => $time,
  9. 'flags' => $flags,
  10. ];
  11. }
  12. public function runTasks(): void {
  13. $now = time();
  14. foreach ($this->tasks as $task) {
  15. // Check if the task is due
  16. if ($now >= $task['time']) {
  17. echo "Running task: " . $task['name'] . "\n";
  18. // Simulate task execution
  19. if (!empty($task['flags']['debug'])) {
  20. echo "Debug mode enabled.\n";
  21. }
  22. // Remove the task from the queue
  23. unset($this->tasks[array_search($task, $this->tasks)]);
  24. }
  25. }
  26. }
  27. }
  28. // Example Usage
  29. $queue = new TaskQueue();
  30. $queue->enqueue('Backup Database', time() + 60, ['debug' => true]); // Run in 1 minute, debug mode
  31. $queue->enqueue('Send Report', time() + 120); // Run in 2 minutes
  32. $queue->enqueue('Update Cache', time() + 180, ['urgent' => true]); // Run in 3 minutes, urgent flag
  33. // Run the tasks
  34. $queue->runTasks();
  35. ?>

Add your comment