问题标签 [symfony-eventdispatcher]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 使用 Symfony 控制台 (CTRL+C) 捕获终端终止/退出
我已经构建了一个命令来触发通过 Internet 下载文件,但是由于这些文件需要由另一个组件处理,我们需要确保每个已下载且在过去 10 秒内未修改的文件是正确的视频并且没有损坏/部分下载。
出于这个原因,我们需要找到一种方法来捕获 CTRL+C 或命令终止并清理任何尚未成功下载的适用文件。
到目前为止,这是我尝试使用symfony/console
and的方法symfony/event-dispatcher
:
但是var_dump()
,如果我执行 CTRL+C,则永远不会在控制台中显示。
建议?
symfony - Symfony GenericEvent 中的 $subject 是什么?
包的提供GenericEvent
了symfony/event-dispatcher
两个属性 -subject
和arguments
. 如果我正确理解文档,arguments
则可用于将上下文数据传递到Event
对象中。但我没有得到,如何使用其他属性。
GenericEvent#subject
打算如何使用?
symfony - 如何在 Symfony 4 中注册事件监听器?
我正在编写一个 Symfony 应用程序。含义:应用程序具有 Symfony 应用程序的结构并使用 Symfony 的M VC(symfony/http-kernel
等symfony/routing
),但应尽可能独立于框架。因此,我使用的是PHP-DI 而不是框架的 DI。
现在我已经添加了symfony/event-dispatcher
组件并为所有自定义事件注册了一个监听器。
services.yaml
在我的system.event_handler
PHP-DI 依赖文件中定义:
现在我收到一个错误:
运行时异常
“system.event_handler”的定义没有类。如果您打算在运行时动态注入此服务,请将其标记为 synthet=true。如果这是一个仅由子定义使用的抽象定义,请添加abstract=true,否则指定一个类以消除此错误。
为什么?以这种速度使用别名是错误的吗?
好的,我已经用services.yaml
我的事件处理程序的 FQCN 替换了别名:
没有错误了。但是事件处理程序仍然没有被添加到EventDispatcher
.
如何在 Symfony 4 中注册事件监听器(在 PHP-DI 容器中定义)?
symfony - 如何在 Symfony 的 services.yaml 中使用 PHP-DI 中定义的服务?
我正在编写一个应用程序,它具有 Symfony 应用程序的结构和一些 Symfony 功能,但应尽可能与框架分离。因此,我使用的是PHP-DI 而不是框架的 DI。
现在我需要 Symfony EventDispatcher
(我的框架解耦架构的苦药,但无论如何......)。我的问题是,我没有从services.yaml
PHP-DI 容器中获得引用——而且我的听众没有开始附加到EventDispatcher
.
如何在中使用 PHP-DI 容器的服务services.yaml
(特别是对于EventDispatcher
,如果它有任何细节)?
这是一些代码:
services.yaml
(完全地)
App\Kernel
(完全地)
/config/dependencies/common.php
(带有依赖项的文件,相关提取)
symfony - 调用 postRemove 不起作用
我的项目有问题:
Not called :
Called :
奇怪的是 postRemove 没有被调用。我确认该实体已从数据库中删除。请给出一个想法。
symfony - 我什么时候应该从 Symfony EventDispatcher 切换到 RabbitMQ(任何 *MQ 库)?
我目前正在考虑的是,在我们的平台上,用户生成的事件数量每天都在增加(通话开始、通话结束、通话记录准备好、用户被阻止等),所以什么时候应该是从 Symfony EventDispatcher 切换到更高效、更可扩展的东西?
如果我错了,请纠正我:Symfony EventDispatcher 将每个订阅者加载到服务器 RAM 中并保持它直到请求被处理?如果是,这意味着 2 个生成的事件将占用 RAM 中的 2x(所有订阅者类的总和)内存,这将导致我增加服务器 RAM,这将导致我支付更多费用,而不是使用有效的事件处理方法(libs,系统架构等)。
php - 触发事件后如何触发发布方法?
我有以下事件类定义:
我创建了一个订阅者,如下所示:
我还在以下位置定义了以下内容services.yaml
:
为什么当我调度这样的事件时,监听器方法publish()
永远不会执行?
我怀疑问题出在kernel.event_listener
但不确定如何正确地为侦听器订阅事件。
php - 如何让服务像 SwiftMailer 一样在 kernel.terminate 上工作?
我想知道如何编写仅在kernel.terminate
.
例如,当我打电话时:
我知道内核将向客户端发送响应,并且仅在发送电子邮件之后。
我有很多可以调用的服务,kernel.terminate
但我不知道如何编写它们以便仅在该事件中调用。
现在,我正在订阅者中编写编写代码:
但是以这种方式工作意味着我必须只处理请求和响应,并且我不想依赖响应。
我不知道是否清楚,但是notificationManager
在我的代码中调用我想要的任何地方并且该经理只在kernel.terminate
.
php - 如何在 Symfony 4 中将上下文传递给自定义事件订阅者?
我正在使用 Symfony 4,并且有自定义事件和订阅者,例如 CustomEvent 和 CustomEventSubscriber。有调度CustomEvent的模块,例如CustomModule。该模块在控制器(ControllerA)和命令(CommandB)中使用。
换句话说,可能有以下两种情况:
或者
CustomEventSubscriber 中的逻辑稍有不同取决于调用 CustomModule 的位置(ControllerA 或 CommandB)。
如何将该信息传递给CustomEventSubscriber
?
我可以向 中添加$context
属性CustomEvent
并将其设置在CustomModule
. 但在这种情况下,我应该将有关上下文的信息传递给CustomModule
.
或者也许我可以使用一些全局设置,例如容器?
或者为每个 CustomEvent 创建两个不同的事件订阅者,禁用自动连接,并“手动”初始化并添加到 ControllerA 和 CommandB 中的调度程序?