承接 zeran/promise-queue 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

zeran/promise-queue

最新稳定版本:2.0

Composer 安装命令:

composer require zeran/promise-queue

包简介

A PHP library for asynchronous, promise-based queues with execution concurrency limit

README 文档

README

A PHP library for asynchronous, promise-based queues with execution concurrency limit.

basic usage example

$q = new Queue();

$d1 = new Deferred();
$q->execute(function (int $jobId) use ($d1) {
    echo 'Run first' . PHP_EOL;
    return $d1->promise();
})->then(function ($value) {
    echo 'Resolve first: ' . $value . PHP_EOL;
});

$d2 = new Deferred();
$q->execute(function (int $jobId) use ($d2) {
    echo 'Run second' . PHP_EOL;
    return $d2->promise();
})->then(function ($value) {
    echo 'Resolve second: ' . $value . PHP_EOL;
});

$d3 = new Deferred();
$q->execute(function (int $jobId) use ($d3) {
    echo 'Run third' . PHP_EOL;
    return $d3->promise();
})->then(function ($value) {
    echo 'Resolve third: ' . $value . PHP_EOL;
});

$d1->resolve('value1');
$d2->resolve('value2');
$d3->resolve('value3');

output

Run first
Resolve first: value1
Run second
Resolve second: value2
Run third
Resolve third: value3

output will be the same even if we change sequence of resolving

$d1->resolve('value1');
$d3->resolve('value3');
$d2->resolve('value2');

also you may return not promise from callable

$q->execute(function (int $jobId) use ($d2) {
    echo 'Runing job' . $jobId . PHP_EOL;
    return 1000;
})->then(function ($value) {
    echo 'Resolve job value: ' . $value . PHP_EOL;
});

output will be

Runing job 1
Resolve job value: 1000

统计信息

  • 总下载量: 1
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: GPL-3.0-or-later
  • 更新时间: 2025-04-01