thenlabs / task-loop
v1.0.1
2021-10-23 21:00 UTC
Requires
- symfony/event-dispatcher: >=4.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.2
- thenlabs/pyramidal-tests: 2.0.x-dev
README
这是一个裸任务循环的PHP实现。
如果你喜欢这个项目,请给我们一个⭐。
安装。
$ composer require thenlabs/task-loop
使用。
文件 example.php
包含以下代码,显示一旦循环开始,它将运行其所有任务。
每次循环迭代都会按照在 start()
方法中指定的间隔时间执行。
任务可以是一个 callable
或实现 ThenLabs\TaskLoop\TaskInterface
接口的对象。
<?php require_once __DIR__.'/vendor/autoload.php'; use ThenLabs\TaskLoop\{TaskLoop, CallableTask}; define('DATE_FORMAT', 'Y-m-d H:i:s'); // create a loop instance. $loop = new TaskLoop(); // adds the task1. $loop->addTask(function (CallableTask $task) { static $counter = 10; echo date(DATE_FORMAT)." Task1: {$counter}\n"; $counter--; if ($counter <= 0) { echo date(DATE_FORMAT)." Task1: End\n\n"; // when task1 ends, the loop will be stopped. $task->getTaskLoop()->stop(); } }); // adds the task2. $loop->addTask(function (CallableTask $task) { static $counter = 5; echo date(DATE_FORMAT)." Task2: {$counter}\n"; $counter--; if ($counter <= 0) { echo date(DATE_FORMAT)." Task2: End\n\n"; // when task2 ends, will be dropped from the loop. $task->end(); } }); $delay = 1000000; // value for the usleep function. $loop->start($delay); echo 'Good bye!';
该文件生成以下结果
2021-10-09 11:30:31 Task1: 10
2021-10-09 11:30:31 Task2: 5
2021-10-09 11:30:32 Task1: 9
2021-10-09 11:30:32 Task2: 4
2021-10-09 11:30:33 Task1: 8
2021-10-09 11:30:33 Task2: 3
2021-10-09 11:30:34 Task1: 7
2021-10-09 11:30:34 Task2: 2
2021-10-09 11:30:35 Task1: 6
2021-10-09 11:30:35 Task2: 1
2021-10-09 11:30:35 Task2: End
2021-10-09 11:30:36 Task1: 5
2021-10-09 11:30:37 Task1: 4
2021-10-09 11:30:38 Task1: 3
2021-10-09 11:30:39 Task1: 2
2021-10-09 11:30:40 Task1: 1
2021-10-09 11:30:40 Task1: End
Good bye!
开发。
运行测试。
要运行测试,执行以下命令
$ ./vendor/bin/pyramidal