krowinski/async

异步运行 PHP 闭包

v2.0.0 2019-12-18 10:01 UTC

This package is auto-updated.

Last update: 2024-08-27 01:52:42 UTC


README

Scrutinizer Code Quality Build Status Code Coverage Latest Stable Version Latest Unstable Version Total Downloads

这是如何工作的?

基本上,它是带有序列化闭包的 "exec"。它被包裹在像 symfony process 和 console 这样的库中。我序列化可调用函数并通过 exec 发送给子进程。为了获取回调,我注册了关闭函数并等待进程结束。

为什么不使用 pcntl?

  • Pcntl 扩展使用 fork,因此您可以在类似 apache2/php-fpm 的 Web 应用程序中忘记使用它,它仅用于 CLI
  • fork 会保留父状态(例如打开的文件),因此有潜在问题

问题?

  • 调用 exec 的速度比 fork 慢
  • 某些资源/函数/数据必须直接传递给闭包

一些研究

示例?

当然,看看这里 - https://github.com/krowinski/async/blob/master/example/example.php

用例(大多是网站上用户不需要等待的代码)

  • 发送回调
  • 发布到队列 amqp
  • 发送外部分析数据
  • 删除文件
  • 处理支付

支持 M$ Windows?

不。

待办事项

  • 测试