tomzx / dataflow
数据流处理器库
dev-master / 0.1.x-dev
2016-01-05 02:51 UTC
Requires
- php: >=5.5.0
Requires (Dev)
- mockery/mockery: ~0.9
- phpunit/phpunit: ~4
Suggests
- ext-pthreads: Allows parallel execution.
This package is auto-updated.
Last update: 2024-09-10 07:12:21 UTC
README
创建简单的流水线以及复杂的图表,这些图表可用于处理数据或仅在阶段依赖关系解决时进行计算。
入门
简单流水线(顺序执行)
$a = function($payload) {
return $payload * -1;
};
$b = function($payload) {
return $payload * 10000;
};
$pipeline = (new Pipeline)
->pipe($a)
->pipe($b);
// Returns 100000
$pipeline->process(-10);
// Can also be built as the following
$stages = [
1 => [$a],
2 => [$b, 1],
];
$pipeline = new Pipeline($stages);
图表流程
$p1 = function($payload) {
return $payload . '1';
};
$p2 = function($payloadP1) {
return $payloadP1 . '2';
};
$p3 = function($payloadP1) {
return $payloadP1 . '3';
};
$p4 = function($payloadP1) {
return $payloadP1 . '4';
};
$p5 = function($payloadP2, $payloadP3) {
return $payloadP2 . ' ' . $payloadP3 . '5';
};
$p6 = function($payloadP5) {
return $payloadP5 . '6';
};
$stages = [
1 => [$p1],
2 => [$p2, 1],
3 => [$p3, 1],
4 => [$p4, 1],
5 => [$p5, 2, 3],
6 => [$p6, 5],
];
$pipeline = new Pipeline($stages);
// Returns Test 12 Test 1356
$pipeline->process('Test ');
// May also be built using the Graph class
$graph = new Graph($stages, new Sequential);
// or $graph = new Graph($stages, new Parallel);
$results = $graph->process('Test ');
// You may inspect the output of every node
// Returns Test 1
$result->output(1);
// Returns Test 12
$result->output(2);
// Returns Test 13
$result->output(3);
// Returns Test 14
$result->output(4);
// Returns Test 12 Test 135
$result->output(5);
// Returns Test 12 Test 1356
$result->output(6);
处理器
为了处理您的图表,您提供了两个处理器:一个顺序
处理器和一个并行
处理器。
顺序
处理器将图表转换为一系列操作以完成任务。它基本上会计算图表依赖关系,并确保在执行每个阶段之前解决这些依赖关系。使用顺序
处理器,一次只能执行一个任务。
并行
处理器在许多任务可以并行执行时很有用。与顺序
处理器类似,它将验证提供的图表是否可以解决。然后,它将同时执行所有可以并行执行的任务。在多核处理器上,如果给定的任务是可并行的,则预期并行
处理器将更快完成。