phresque/spork

此包已被废弃,不再维护。未建议替代包。

异步PHP

v1.0.0 2014-10-19 17:31 UTC

This package is not auto-updated.

Last update: 2018-11-08 14:45:02 UTC


README

原始库: Kriswallsmith/spork

Spork: 分支上的PHP

Build Status

原始库由Kriswallsmith编写,但为了在phresque项目中使用,已被简化。

重大变更

  • FIFO上下管道被移除 - 原来创建了两个(上下)FIFO文件来发送父子进程之间的数据。这对于phresque项目不是必需的,并且在创建大量作业时留下它非常浪费。
  • 承诺 - 原始库为等待子进程完成提供了一些语法糖,使用在异步语言中广泛使用的延迟对象,例如JavaScript。由于PHP的非异步特性,未添加任何附加功能,在我看来,这个特性只是使一个已经很复杂的问题(PHP分叉)变得更加复杂。
<?php

$manager = new Spork\ProcessManager();
$fork = $manager->fork(function() {
    // do something in child process!
    return 'Hello from '.getmypid();
});

#Carry on in parent process or call:

if($fork->wait()->isSuccessful())
{
    echo 'Hurray!';
}else
{
    echo 'Uh oh! Exited with: ' . $fork->getExitStatus();
}

示例:将图像上传到您的CDN

将迭代器输入进程管理器,它将作业分成多个批次,并在多个进程中分配它们。

<?php

$files = new IteratorIterator(FilesystemIterator('/path/to/images', FilesystemIterator::SKIP_DOTS));

$manager->process($files, function(SplFileInfo $file) {
    // upload this file
});