Verzeichnisstruktur phpBB-3.3.15
- Veröffentlicht
- 28.08.2024
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
TaskQueue.php
01 <?php
02
03 namespace GuzzleHttp\Promise;
04
05 /**
06 * A task queue that executes tasks in a FIFO order.
07 *
08 * This task queue class is used to settle promises asynchronously and
09 * maintains a constant stack size. You can use the task queue asynchronously
10 * by calling the `run()` function of the global task queue in an event loop.
11 *
12 * GuzzleHttp\Promise\Utils::queue()->run();
13 */
14 class TaskQueue implements TaskQueueInterface
15 {
16 private $enableShutdown = true;
17 private $queue = [];
18
19 public function __construct($withShutdown = true)
20 {
21 if ($withShutdown) {
22 register_shutdown_function(function () {
23 if ($this->enableShutdown) {
24 // Only run the tasks if an E_ERROR didn't occur.
25 $err = error_get_last();
26 if (!$err || ($err['type'] ^ E_ERROR)) {
27 $this->run();
28 }
29 }
30 });
31 }
32 }
33
34 public function isEmpty()
35 {
36 return !$this->queue;
37 }
38
39 public function add(callable $task)
40 {
41 $this->queue[] = $task;
42 }
43
44 public function run()
45 {
46 while ($task = array_shift($this->queue)) {
47 /** @var callable $task */
48 $task();
49 }
50 }
51
52 /**
53 * The task queue will be run and exhausted by default when the process
54 * exits IFF the exit is not the result of a PHP E_ERROR error.
55 *
56 * You can disable running the automatic shutdown of the queue by calling
57 * this function. If you disable the task queue shutdown process, then you
58 * MUST either run the task queue (as a result of running your event loop
59 * or manually using the run() method) or wait on each outstanding promise.
60 *
61 * Note: This shutdown will occur before any destructors are triggered.
62 */
63 public function disableShutdown()
64 {
65 $this->enableShutdown = false;
66 }
67 }
68