https://github.com/thenlabs/task-loop
A PHP implementation of a bare task loop.
https://github.com/thenlabs/task-loop
event-loop event-loops loop php php-library task tasks
Last synced: 8 months ago
JSON representation
A PHP implementation of a bare task loop.
- Host: GitHub
- URL: https://github.com/thenlabs/task-loop
- Owner: thenlabs
- License: mit
- Created: 2021-10-09T16:07:51.000Z (over 4 years ago)
- Default Branch: 1.0
- Last Pushed: 2022-01-07T13:29:25.000Z (over 4 years ago)
- Last Synced: 2025-08-31T09:04:31.654Z (8 months ago)
- Topics: event-loop, event-loops, loop, php, php-library, task, tasks
- Language: PHP
- Homepage:
- Size: 53.7 KB
- Stars: 1
- Watchers: 0
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# TaskLoop
A PHP implementation of a bare task loop.
>If you like this project gift us a ⭐.
## Installation.
$ composer require thenlabs/task-loop
## Usage.
The file `example.php` contains the below code which show that once the loop is started, it will runs each one of his tasks.
Each loop iteration is executed with a time interval which it's specified with the `start()` method.
A task can be a `callable` or an object which implements the `ThenLabs\TaskLoop\TaskInterface` interface.
```php
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!';
```
That file produce the next result:
```
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!
```
## Development.
### Running the tests.
For run the tests, runs the next command:
$ ./vendor/bin/pyramidal