PHPackages                             hyperf/dag-incubator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. hyperf/dag-incubator

AbandonedArchivedLibrary[Utility &amp; Helpers](/categories/utility)

hyperf/dag-incubator
====================

Dag runner for hyperf

v0.1.1(5y ago)10267MITPHPPHP &gt;=7.3

Since Jan 23Pushed 5y ago2 watchersCompare

[ Source](https://github.com/hyperf/dag-incubator)[ Packagist](https://packagist.org/packages/hyperf/dag-incubator)[ RSS](/packages/hyperf-dag-incubator/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (2)Dependencies (8)Versions (4)Used By (0)

`hyperf/dag-incubator` 是一个轻量级有向无环图 (**D**irected **A**cyclic **G**raph) 任务编排库。

场景
--

[](#场景)

假设我们有一系列任务需要执行。

- 如果他们之间存在依赖关系，则可以将他们顺序执行。
- 如果他们并不相互依赖，那么我们可以选择并发执行，以加快执行速度。
- 两者间还存在中间状态：一部分任务存在依赖关系，而另一些任务又可以并发执行。

我们可以将第三种复杂的场景抽象成 `DAG` 来解决。

示例
--

[](#示例)

[![](https://camo.githubusercontent.com/2a20a379b4332409bd057cb0de2d8cfd1d26c4ba876e475957de66479b9e401c/68747470733a2f2f6d65726d6169642e696e6b2f696d672f65794a6a6232526c496a6f6963335268644756456157466e636d46744c58597958473467494341675779706449433074506942425847346749434167515341744c543467516c787549434167494545674c53302d49454e63626941674943424249433074506942455847346749434167524341744c543467523178754943416749454d674c53302d49456463626941674943424449433074506942475847346749434167516941744c543467526c787549434167494549674c53302d49455663626941674943424349433074506942495847346749434167534341744c5434675356787549434167494555674c53302d49456c636269416749434247494330745069424a5847346749434167527941744c543467535678754943416749456b674c53302d4946737158567875494341674943416749434167494341674969776962575679625746705a43493665794a30614756745a534936496d526c5a6d4631624851694c434a30614756745a565a68636d6c68596d786c6379493665794a6959574e725a334a766457356b496a6f6964326870644755694c434a77636d6c7459584a3551323973623349694f69496a52554e4651305a47496977696332566a6232356b59584a3551323973623349694f69496a5a6d5a6d5a6d526c496977696447567964476c68636e6c446232787663694936496d687a624367344d4377674d5441774a5377674f5459754d6a63304e5441354f44417a4f5355704969776963484a706257467965554a76636d526c636b4e7662473979496a6f6961484e734b4449304d4377674e6a416c4c4341344e6934794e7a51314d446b344d444d354a536b694c434a7a5a574e76626d5268636e6c4362334a6b5a584a446232787663694936496d687a624367324d4377674e6a416c4c4341344d7934314d6a6b304d5445334e6a51334a536b694c434a305a584a306157467965554a76636d526c636b4e7662473979496a6f6961484e734b4467774c4341324d435573494467324c6a49334e4455774f5467774d7a6b6c4b534973496e427961573168636e6c555a58683051323973623349694f69496a4d544d784d7a4177496977696332566a6232356b59584a355647563464454e7662473979496a6f69497a41774d4441794d534973496e526c636e527059584a355647563464454e7662473979496a6f69636d64694b446b754e5441774d4441774d4441774d5377674f5334314d4441774d4441774d4441784c4341354c6a55774d4441774d4441774d4445704969776962476c755a554e7662473979496a6f69497a4d7a4d7a4d7a4d794973496e526c65485244623278766369493649694d7a4d7a4d694c434a7459576c75516d746e496a6f694930564452554e4752694973496e4e6c593239755a454a725a79493649694e6d5a6d5a6d5a4755694c434a6962334a6b5a584978496a6f69497a6b7a4e7a424551694973496d4a76636d526c636a49694f69496a5957466859544d7a4969776959584a796233646f5a57466b51323973623349694f69496a4d7a4d7a4d7a4d7a496977695a6d397564455a6862576c7365534936496c776964484a6c596e566a614756304947317a5843497349485a6c636d5268626d45734947467961574673496977695a6d397564464e70656d55694f6949784e6e423449697769624746695a57784359574e725a334a766457356b496a6f69493255345a54686c4f434973496d35765a475643613263694f69496a52554e4651305a4749697769626d396b5a554a76636d526c6369493649694d354d7a6377524549694c434a6a6248567a64475679516d746e496a6f6949325a6d5a6d5a6b5a534973496d4e7364584e305a584a4362334a6b5a5849694f69496a5957466859544d7a496977695a47566d5958567364457870626d7444623278766369493649694d7a4d7a4d7a4d7a4d694c434a30615852735a554e7662473979496a6f69497a4d7a4d794973496d566b5a32564d59574a6c62454a685932746e636d3931626d51694f69496a5a54686c4f4755344969776959574e3062334a4362334a6b5a5849694f694a6f6332776f4d6a55354c6a59794e6a45324f4449794e444d73494455354c6a63334e6a557a4e6a4d784d6a676c4c4341344e7934354d4445354e6a41334f44517a4a536b694c434a6859335276636b4a725a79493649694e4651305644526b59694c434a6859335276636c526c654852446232787663694936496d4a7359574e724969776959574e3062334a4d6157356c51323973623349694f694a6e636d56354969776963326c6e626d467351323973623349694f69496a4d7a4d7a4969776963326c6e626d46735647563464454e7662473979496a6f69497a4d7a4d794973496d7868596d5673516d3934516d746e51323973623349694f69496a52554e4651305a4749697769624746695a5778436233684362334a6b5a584a446232787663694936496d687a624367794e546b754e6a49324d5459344d6a49304d7977674e546b754e7a63324e544d324d7a45794f435573494467334c6a6b774d546b324d4463344e444d6c4b534973496d7868596d56735647563464454e7662473979496a6f69596d7868593273694c434a73623239775647563464454e7662473979496a6f69596d7868593273694c434a756233526c516d39795a47567951323973623349694f69496a5957466859544d7a49697769626d39305a554a725a304e7662473979496a6f6949325a6d5a6a56685a434973496d3576644756555a58683051323973623349694f694a696247466a61794973496d466a64476c32595852706232354362334a6b5a584a44623278766369493649694d324e6a59694c434a6859335270646d463061573975516d746e51323973623349694f69496a5a6a526d4e4759304969776963325678645756755932564f645731695a584a446232787663694936496e646f6158526c496977696332566a64476c76626b4a725a304e7662473979496a6f69636d6469595367784d444973494445774d6977674d6a55314c4341774c6a51354b534973496d467364464e6c5933527062323543613264446232787663694936496e646f6158526c496977696332566a64476c76626b4a725a304e76624739794d69493649694e6d5a6d59304d4441694c434a3059584e72516d39795a47567951323973623349694f69496a4e544d305a6d4a6a496977696447467a61304a725a304e7662473979496a6f69497a68684f54426b5a434973496e5268633274555a58683054476c6e614852446232787663694936496e646f6158526c496977696447467a6131526c654852446232787663694936496e646f6158526c496977696447467a6131526c6548524559584a7251323973623349694f694a696247466a61794973496e5268633274555a5868305433563063326c6b5a554e7662473979496a6f69596d7868593273694c434a3059584e725647563464454e7361574e7259574a735a554e7662473979496a6f69497a41774d7a45324d794973496d466a64476c325a5652686332744362334a6b5a584a44623278766369493649694d314d7a526d596d4d694c434a6859335270646d565559584e72516d746e51323973623349694f69496a596d5a6a4e325a6d496977695a334a705a454e7662473979496a6f6962476c6e6148526e636d5635496977695a4739755a56526863327443613264446232787663694936496d78705a3268305a334a6c65534973496d5276626d565559584e72516d39795a47567951323973623349694f694a6e636d56354969776959334a7064454a76636d526c636b4e7662473979496a6f6949325a6d4f4467344f434973496d4e7961585243613264446232787663694936496e4a6c5a434973496e52765a47463554476c755a554e7662473979496a6f69636d566b49697769624746695a5778446232787663694936496d4a7359574e72496977695a584a7962334a4361326444623278766369493649694d314e5449794d6a49694c434a6c636e4a76636c526c65485244623278766369493649694d314e5449794d6a49694c434a6a6247467a6331526c654851694f69496a4d544d784d7a4177496977695a6d6c736246523563475577496a6f694930564452554e4752694973496d5a70624778556558426c4d53493649694e6d5a6d5a6d5a4755694c434a6d6157787356486c775a5449694f694a6f6332776f4d7a41304c4341784d44416c4c4341354e6934794e7a51314d446b344d444d354a536b694c434a6d6157787356486c775a544d694f694a6f6332776f4d5449304c4341784d44416c4c4341354d7934314d6a6b304d5445334e6a51334a536b694c434a6d6157787356486c775a5451694f694a6f6332776f4d5463324c4341784d44416c4c4341354e6934794e7a51314d446b344d444d354a536b694c434a6d6157787356486c775a5455694f694a6f6332776f4c545173494445774d43557349446b7a4c6a55794f5451784d5463324e44636c4b534973496d5a70624778556558426c4e694936496d687a624367344c4341784d44416c4c4341354e6934794e7a51314d446b344d444d354a536b694c434a6d6157787356486c775a5463694f694a6f6332776f4d5467344c4341784d44416c4c4341354d7934314d6a6b304d5445334e6a51334a536b6966583073496e56775a4746305a55566b61585276636949365a6d467363325639)](https://mermaid-js.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoic3RhdGVEaWFncmFtLXYyXG4gICAgWypdIC0tPiBBXG4gICAgQSAtLT4gQlxuICAgIEEgLS0-IENcbiAgICBBIC0tPiBEXG4gICAgRCAtLT4gR1xuICAgIEMgLS0-IEdcbiAgICBDIC0tPiBGXG4gICAgQiAtLT4gRlxuICAgIEIgLS0-IEVcbiAgICBCIC0tPiBIXG4gICAgSCAtLT4gSVxuICAgIEUgLS0-IElcbiAgICBGIC0tPiBJXG4gICAgRyAtLT4gSVxuICAgIEkgLS0-IFsqXVxuICAgICAgICAgICAgIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQiLCJ0aGVtZVZhcmlhYmxlcyI6eyJiYWNrZ3JvdW5kIjoid2hpdGUiLCJwcmltYXJ5Q29sb3IiOiIjRUNFQ0ZGIiwic2Vjb25kYXJ5Q29sb3IiOiIjZmZmZmRlIiwidGVydGlhcnlDb2xvciI6ImhzbCg4MCwgMTAwJSwgOTYuMjc0NTA5ODAzOSUpIiwicHJpbWFyeUJvcmRlckNvbG9yIjoiaHNsKDI0MCwgNjAlLCA4Ni4yNzQ1MDk4MDM5JSkiLCJzZWNvbmRhcnlCb3JkZXJDb2xvciI6ImhzbCg2MCwgNjAlLCA4My41Mjk0MTE3NjQ3JSkiLCJ0ZXJ0aWFyeUJvcmRlckNvbG9yIjoiaHNsKDgwLCA2MCUsIDg2LjI3NDUwOTgwMzklKSIsInByaW1hcnlUZXh0Q29sb3IiOiIjMTMxMzAwIiwic2Vjb25kYXJ5VGV4dENvbG9yIjoiIzAwMDAyMSIsInRlcnRpYXJ5VGV4dENvbG9yIjoicmdiKDkuNTAwMDAwMDAwMSwgOS41MDAwMDAwMDAxLCA5LjUwMDAwMDAwMDEpIiwibGluZUNvbG9yIjoiIzMzMzMzMyIsInRleHRDb2xvciI6IiMzMzMiLCJtYWluQmtnIjoiI0VDRUNGRiIsInNlY29uZEJrZyI6IiNmZmZmZGUiLCJib3JkZXIxIjoiIzkzNzBEQiIsImJvcmRlcjIiOiIjYWFhYTMzIiwiYXJyb3doZWFkQ29sb3IiOiIjMzMzMzMzIiwiZm9udEZhbWlseSI6IlwidHJlYnVjaGV0IG1zXCIsIHZlcmRhbmEsIGFyaWFsIiwiZm9udFNpemUiOiIxNnB4IiwibGFiZWxCYWNrZ3JvdW5kIjoiI2U4ZThlOCIsIm5vZGVCa2ciOiIjRUNFQ0ZGIiwibm9kZUJvcmRlciI6IiM5MzcwREIiLCJjbHVzdGVyQmtnIjoiI2ZmZmZkZSIsImNsdXN0ZXJCb3JkZXIiOiIjYWFhYTMzIiwiZGVmYXVsdExpbmtDb2xvciI6IiMzMzMzMzMiLCJ0aXRsZUNvbG9yIjoiIzMzMyIsImVkZ2VMYWJlbEJhY2tncm91bmQiOiIjZThlOGU4IiwiYWN0b3JCb3JkZXIiOiJoc2woMjU5LjYyNjE2ODIyNDMsIDU5Ljc3NjUzNjMxMjglLCA4Ny45MDE5NjA3ODQzJSkiLCJhY3RvckJrZyI6IiNFQ0VDRkYiLCJhY3RvclRleHRDb2xvciI6ImJsYWNrIiwiYWN0b3JMaW5lQ29sb3IiOiJncmV5Iiwic2lnbmFsQ29sb3IiOiIjMzMzIiwic2lnbmFsVGV4dENvbG9yIjoiIzMzMyIsImxhYmVsQm94QmtnQ29sb3IiOiIjRUNFQ0ZGIiwibGFiZWxCb3hCb3JkZXJDb2xvciI6ImhzbCgyNTkuNjI2MTY4MjI0MywgNTkuNzc2NTM2MzEyOCUsIDg3LjkwMTk2MDc4NDMlKSIsImxhYmVsVGV4dENvbG9yIjoiYmxhY2siLCJsb29wVGV4dENvbG9yIjoiYmxhY2siLCJub3RlQm9yZGVyQ29sb3IiOiIjYWFhYTMzIiwibm90ZUJrZ0NvbG9yIjoiI2ZmZjVhZCIsIm5vdGVUZXh0Q29sb3IiOiJibGFjayIsImFjdGl2YXRpb25Cb3JkZXJDb2xvciI6IiM2NjYiLCJhY3RpdmF0aW9uQmtnQ29sb3IiOiIjZjRmNGY0Iiwic2VxdWVuY2VOdW1iZXJDb2xvciI6IndoaXRlIiwic2VjdGlvbkJrZ0NvbG9yIjoicmdiYSgxMDIsIDEwMiwgMjU1LCAwLjQ5KSIsImFsdFNlY3Rpb25Ca2dDb2xvciI6IndoaXRlIiwic2VjdGlvbkJrZ0NvbG9yMiI6IiNmZmY0MDAiLCJ0YXNrQm9yZGVyQ29sb3IiOiIjNTM0ZmJjIiwidGFza0JrZ0NvbG9yIjoiIzhhOTBkZCIsInRhc2tUZXh0TGlnaHRDb2xvciI6IndoaXRlIiwidGFza1RleHRDb2xvciI6IndoaXRlIiwidGFza1RleHREYXJrQ29sb3IiOiJibGFjayIsInRhc2tUZXh0T3V0c2lkZUNvbG9yIjoiYmxhY2siLCJ0YXNrVGV4dENsaWNrYWJsZUNvbG9yIjoiIzAwMzE2MyIsImFjdGl2ZVRhc2tCb3JkZXJDb2xvciI6IiM1MzRmYmMiLCJhY3RpdmVUYXNrQmtnQ29sb3IiOiIjYmZjN2ZmIiwiZ3JpZENvbG9yIjoibGlnaHRncmV5IiwiZG9uZVRhc2tCa2dDb2xvciI6ImxpZ2h0Z3JleSIsImRvbmVUYXNrQm9yZGVyQ29sb3IiOiJncmV5IiwiY3JpdEJvcmRlckNvbG9yIjoiI2ZmODg4OCIsImNyaXRCa2dDb2xvciI6InJlZCIsInRvZGF5TGluZUNvbG9yIjoicmVkIiwibGFiZWxDb2xvciI6ImJsYWNrIiwiZXJyb3JCa2dDb2xvciI6IiM1NTIyMjIiLCJlcnJvclRleHRDb2xvciI6IiM1NTIyMjIiLCJjbGFzc1RleHQiOiIjMTMxMzAwIiwiZmlsbFR5cGUwIjoiI0VDRUNGRiIsImZpbGxUeXBlMSI6IiNmZmZmZGUiLCJmaWxsVHlwZTIiOiJoc2woMzA0LCAxMDAlLCA5Ni4yNzQ1MDk4MDM5JSkiLCJmaWxsVHlwZTMiOiJoc2woMTI0LCAxMDAlLCA5My41Mjk0MTE3NjQ3JSkiLCJmaWxsVHlwZTQiOiJoc2woMTc2LCAxMDAlLCA5Ni4yNzQ1MDk4MDM5JSkiLCJmaWxsVHlwZTUiOiJoc2woLTQsIDEwMCUsIDkzLjUyOTQxMTc2NDclKSIsImZpbGxUeXBlNiI6ImhzbCg4LCAxMDAlLCA5Ni4yNzQ1MDk4MDM5JSkiLCJmaWxsVHlwZTciOiJoc2woMTg4LCAxMDAlLCA5My41Mjk0MTE3NjQ3JSkifX0sInVwZGF0ZUVkaXRvciI6ZmFsc2V9)

假设我们有一系列任务，拓扑结构如上图所示，顶点代表任务，边缘代表依赖关系。(A完成后才能完成B、C、D，B完成后才能完成H、E、F...)

通过 `hyperf/dag-incubator` 可以使用如下方式构建 `DAG` 并执行。

```
