wyrihaximus/parallel-runtime

🎁 ext-parallel 运行时包装,增加错误、信号和异常处理

1.0.0 2020-12-05 23:09 UTC

README

ext-parallel 运行时包装,增加错误、信号和异常处理。

Continuous Integration Latest Stable Version Total Downloads Code Coverage Type Coverage License

安装

通过 Composer 安装,使用以下命令,它将自动检测最新版本并绑定 ^

composer require wyrihaximus/parallel-runtime

使用

Runtime 类透明地包装 ext-parallel 的运行时类。但它不会返回您从闭包返回的内容,而是返回一个 Outcome 对象。该 Outcome 对象包含您闭包的结果,以及任何报告的错误。请考虑以下示例

<?php

declare(strict_types=1);

use WyriHaximus\Parallel\Runtime;

use function trigger_error;

use const WyriHaximus\Constants\ComposerAutoloader\LOCATION;

$runtime = new Runtime(LOCATION);
$future  = $runtime->run(static function (): string {
    trigger_error('Error! Error! Error!');

    return 'yay';
});
posix_kill(posix_getpid(), SIGUSR1);
$outcome = $future->value();
echo get_class($outcome), PHP_EOL; // WyriHaximus\Parallel\Outcome
echo $outcome->result(), PHP_EOL; // yay
foreach ($outcome->errors() as $error) {
    echo $error->message(), PHP_EOL; // Error! Error! Error!
}
foreach ($outcome->signals() as $signal) {
    echo $signal->signal(), PHP_EOL; // SIGUSR1
}

许可证

MIT 许可证 (MIT)

版权所有 © 2020 Cees-Jan Kiewiet

特此授予任何获取此软件及其相关文档文件(以下简称“软件”)副本的个人,在软件上无限制地处理软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,以及允许向软件提供的人这样做,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论此类责任基于合同、侵权或其他方式产生,无论此类责任是否与软件或其使用或其他方式有关。