docs(articles): Magento and Symfony examples side by side, request lifecycle as a Mermaid diagram
uk/articles/magento-to-symfony/infrastructure/async.md
+12
−2
1
1
# Черги та cron
2
2
3
+
::::columns
4
+
:::col
3
5
**Magento** · чотири XML і publisher
4
6
5
7
```xml
19
21
}
20
22
}
21
23
```
22
−
24
+
:::
25
+
:::col
23
26
**Symfony** · повідомлення, обробник, маршрут
24
27
25
28
```php
39
42
40
43
$this->bus->dispatch(new ReindexProduct($product->getId()));
41
44
```
45
+
:::
46
+
::::
42
47
43
48
**Symfony** · config/packages/messenger.yaml
44
49
62
67
63
68
## crontab.xml → Scheduler
64
69
70
+
::::columns
71
+
:::col
65
72
**Magento** · crontab.xml
66
73
67
74
```xml
73
80
</job>
74
81
</group>
75
82
```
76
−
83
+
:::
84
+
:::col
77
85
**Symfony** · symfony/scheduler
78
86
79
87
```php
91
99
# запуск розкладу — це воркер Messenger:
92
100
# bin/console messenger:consume scheduler_default
93
101
```
102
+
:::
103
+
::::
94
104
95
105
Альтернатива без Scheduler — звичайна консольна команда в системному crontab. Для задач, які не можна запускати паралельно на кількох серверах, додайте компонент Lock.