gandung / task-queue

使用PHP编写的任务队列库

v1.0.2 2017-09-24 13:44 UTC

This package is auto-updated.

Last update: 2024-09-21 05:00:48 UTC


README

使用PHP编写的任务队列库。

SensioLabsInsight Coverage Status Scrutinizer Code Quality Build Status

注册单个任务

现有函数或回调

<?php

use TaskQueue\TaskQueue;
use TaskQueue\Invoker\FunctionInvoker;

$taskQueue = new TaskQueue;

$taskQueue->add(new FunctionInvoker('file_get_contents'), '/etc/passwd');

$taskQueue->run();

闭包

<?php

use TaskQueue\TaskQueue;
use TaskQueue\Invoker\FunctionInvoker;

$taskQueue = new TaskQueue;

$closure = function() {
	echo "Hello with closures." . PHP_EOL;
};

$taskQueue->add(new FunctionInvoker($closure));

$taskQueue->run();

带有类名的类方法

<?php

use TaskQueue\TaskQueue;
use TaskQueue\Invoker\MethodInvoker;

$taskQueue = new TaskQueue;

$taskQueue->add(new MethodInvoker(['instance' => \SplPriorityQueue::class, 'method' => 'count']));

$taskQueue->run();

带有类实例的类方法

<?php

use TaskQueue\TaskQueue;
use TaskQueue\Invoker\MethodInvoker;

$queue = new \SplPriorityQueue;
$taskQueue = new TaskQueue;

$taskQueue->add(new MethodInvoker(['instance' => $queue, 'method' => 'count']));

$taskQueue->run();

注册多个任务

现有函数或回调

<?php

use TaskQueue\TaskQueue;
use TaskQueue\Invoker\FunctionInvoker;

$taskQueue = new TaskQueue;

$taskQueue
	->add(new FunctionInvoker('file_get_contents'), '/etc/passwd')
	->add(new FunctionInvoker('printf'), '%d' . PHP_EOL, 31337);

$taskQueue->run();

闭包

<?php

use TaskQueue\TaskQueue;
use TaskQueue\Invoker\FunctionInvoker;

$taskQueue = new TaskQueue;

$closures = [
	function() {
		echo "This will be a second run." . PHP_EOL;
	},
	function() {
		echo "This will be a first run." . PHP_EOL;
	}
];

$taskQueue
	->add(new FunctionInvoker($closures[0]))
	->add(new FunctionInvoker($closures[1]));

$taskQueue->run();

单元测试

vendor/bin/phpunit