Implement Unit Tests, add Readme, add examples, stronger implementation

This commit is contained in:
2020-12-11 01:25:38 +01:00
commit ffebc74a7d
19 changed files with 3149 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
<?php
use Toalett\Multiprocessing\ConcurrencyLimit;
use Toalett\Multiprocessing\ContextBuilder;
require_once __DIR__ . '/../vendor/autoload.php';
class Job
{
private string $title;
public function __construct(string $title)
{
$this->title = $title;
}
public function __invoke()
{
cli_set_process_title('php ' . $this->title);
print("start:{$this->title}\n");
sleep(3);
print("stop :{$this->title}\n");
}
}
$limit = ConcurrencyLimit::singleWorker();
$context = ContextBuilder::create()->withLimit($limit)->build();
for ($i = 0; $i < 3; $i++) {
$title = md5(mt_rand());
$context->submit(new Job($title));
}
$context->on('no_workers_remaining', fn() => $context->stop());
$context->run();