定制 happyslucker/a-async 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

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

happyslucker/a-async

Composer 安装命令:

composer require happyslucker/a-async

包简介

High-performance parallel processing & async library for PHP.

README 文档

README

AAsync

PHP Version License Type

About AAsync

AAsync [Almost Async] is a high-performance, lightweight PHP library designed for parallel processing and asynchronous execution. By leveraging PCNTL forking for CPU-bound tasks and PHP Fibers for I/O-bound operations, AAsync allows you to break the synchronous barrier of PHP with a clean, modern API.

✨ Features

  • Parallel CPU Processing: Execute heavy computations in separate processes using pcntl_fork.
  • Fiber-based Async I/O: Non-blocking HTTP requests using Fibers and curl_multi.
  • Process Pooling: Managed worker pools with a configurable concurrency limit.
  • Future-based Flow: Implementation of Future objects with support for asynchronous chaining via then(), exception handling with catch(), and result resolution using await().
  • High-Performance IPC: Uses stream_socket_pair for parent-child communication with a custom binary protocol (Header + Payload) to ensure data integrity.
  • Simple Facade: Unified entry point via Async::cpu() and Async::http().

📦 Installation

Ensure you have ext-pcntl, ext-posix, and ext-curl installed.

composer require happyslucker/a-async

🚀 Quick Start

1. CPU-Bound Parallelism

Run heavy tasks in the background without blocking the main process. PHP

use HappySlucker\AAsync\Async;

// Run a heavy task in a separate process
$future = Async::cpu()->run(function(int $times): int {
    $result = 0;
    for ($i = 0; $i < $times; $i++) { $result += $i; }
    return $result;
}, 1000000);

// Do something else here...

// Get the result (blocks until finished)
echo "Result: " . $future->await();

2. Concurrent Map (Parallel Processing)

Process a collection of items in parallel with a concurrency limit.

use HappySlucker\AAsync\Async;

$items = [1, 2, 3, 4, 5];

$results = Async::cpu()->parallel(
    static fn(int $item): int => $item * 10,
    $items, 
    concurrency: 3
);

print_r($results);

3. Asynchronous HTTP (Fibers)

Perform non-blocking HTTP requests. The execution yields back to the manager while waiting for the network.

use HappySlucker\AAsync\Async;

$http = Async::http();

// Start multiple requests
$f1 = $http->get('https://httpbin.org/get');
$f2 = $http->get('https://httpbin.org/delay/1');

// Await them - the FiberManager handles the concurrent execution automatically
$res1 = $f1->await();
$res2 = $f2->await();


echo $res1->statusCode;

🛠️ Advanced Architecture

The Future Pattern

Both CPU and HTTP tasks return a Future object. You can handle results via blocking await() or non-blocking then().

use HappySlucker\AAsync\Async;

function foo(): int
{
    return 5 + 5;
}

$future = Async::cpu()
    ->run(static fn(): int => foo())
    ->then(static fn(int $result): int => $result * 5);

print_r($future->await());

Process Pool & Reaping

The ProcessPool automatically manages the lifecycle of child processes. It limits the number of active workers and "reaps" (cleans up) finished processes to prevent zombies and memory leaks.

Communication Channel

AAsync uses a binary header protocol over Unix Sockets for parent-child communication:

  • Serialization: Uses MsgPack (if available) for speed, falling back to JSON.
  • Transport: stream_socket_pair provides a bi-directional pipe.

⚙️ Requirements

  • PHP: 8.3 or higher
  • Extensions:
    • pcntl: Required for process forking.
    • posix: Required for process management.
    • curl: Required for async HTTP.
    • OS: Linux or macOS (Windows is not supported due to pcntl).

📜 License

The MIT License (MIT).

Created by HappySlucker. Happy coding! 🍻

happyslucker/a-async 适用场景与选型建议

happyslucker/a-async 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2 次下载、GitHub Stars 达 4, 最近一次更新时间为 2026 年 02 月 04 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「performance」 「http」 「process」 「sockets」 「async」 「worker」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 happyslucker/a-async 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 happyslucker/a-async 我们能提供哪些服务?
定制开发 / 二次开发

基于 happyslucker/a-async 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-02-04