Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在laravel应用程序上,无论事件被触发多少次,是否可以只调用一次侦听器?_Php_Laravel - Fatal编程技术网

Php 在laravel应用程序上,无论事件被触发多少次,是否可以只调用一次侦听器?

Php 在laravel应用程序上,无论事件被触发多少次,是否可以只调用一次侦听器?,php,laravel,Php,Laravel,我想标题说明了一切。。在Laravel应用程序中,我在代码中多次发送事件,并为它们提供订户,但我希望它只处理一次,而不管流中触发了多少次事件 有没有明确的方法可以做到这一点,或者我需要一个..单例类或类似的东西 谢谢您可以使用event::forget('YourEvent')取消对事件的收听 缺点是,此事件的所有其他侦听器也将被删除。您只需更新侦听器代码并进行检查(可能基于数据库中存储的数据,或者使用一些日志,如果第一次成功执行,您将存储这些日志),如果已经处理,则不执行任何操作,否则处理并记

我想标题说明了一切。。在Laravel应用程序中,我在代码中多次发送事件,并为它们提供订户,但我希望它只处理一次,而不管流中触发了多少次事件

有没有明确的方法可以做到这一点,或者我需要一个..单例类或类似的东西


谢谢

您可以使用
event::forget('YourEvent')取消对事件的收听


缺点是,此事件的所有其他侦听器也将被删除。

您只需更新侦听器代码并进行检查(可能基于数据库中存储的数据,或者使用一些日志,如果第一次成功执行,您将存储这些日志),如果已经处理,则不执行任何操作,否则处理并记录(或更新)。如果我定义额外的事件,在所有这些事件上触发,并且只被一个特定的侦听器捕获(并且在那里被遗忘),那么负面影响是可以避免的。不像我希望的那么清楚,但我会做好的。谢谢。出于某种原因事件::忘记(“你的事件”);输入订阅服务器不工作。它处理事件的次数与发送事件的次数相同。最后,我在单例中设置了属性。您使用了正确的事件名称吗?对于雄辩的模型事件,它们被命名为“雄辩的。更新的:模型类”(更新事件的示例)。这可能对某些人来说是有价值的信息(我不知道),但实际上我只使用一个普通事件,在代码中调度,并像event::forget(MyEvent::class)一样调用它;我猜这个“忘记”会在其他听众中被遗忘,他们会在下一个听众中听到,但不会被你从现在起称之为“忘记”的人遗忘。。