phresque/spork
此包已被废弃,不再维护。未建议替代包。
异步PHP
v1.0.0
2014-10-19 17:31 UTC
Requires
- php: >=5.3.0
- ext-pcntl: *
- ext-posix: *
- symfony/event-dispatcher: *
Requires (Dev)
- satooshi/php-coveralls: dev-master
This package is not auto-updated.
Last update: 2018-11-08 14:45:02 UTC
README
原始库: Kriswallsmith/spork
Spork: 分支上的PHP
原始库由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 });