laravel-5 - 有什么方法可以在laravel 5中发送闭包?

标签 laravel-5 queue closures dispatch

在 Laravel 4 中,我可以使用 queue::push(function...) 将闭包插入队列,但这在 laravel 5 中不再有效。相反,我似乎必须为每个要推送到队列的函数创建一个自定义 Job 类。

由于我想要推送的函数只有几行长,并且只在一个地方使用过,因此为每个案例编写一个完整的类似乎真的是浪费时间和空间。

我目前能想到的最佳“解决方案”是使用 PHP 的反射方法在调用时动态生成新类的辅助函数,或者使用接受闭包作为参数的通用作业,即 dispatch(new ClosureJob(function(){...}));
这些对我来说似乎不太理想。有没有另一种方法可以做到这一点?或者我将不得不实现其中之一?

最佳答案

我依靠 OpisClosure 实现了这一点。图书馆。像这样扩展类:

class QueueableClosure extends SerializableClosure
{
    public function handle() {
        call_user_func_array($this->closure, func_get_args());
    }
}

然后像这样使用它:
Queue::push(new QueueableClosure(function(){
    Log::debug("this is the QueueableClosure in action.");
}));

注意请参阅下面来自@Quezler 的关于可能的限制的评论!

关于laravel-5 - 有什么方法可以在laravel 5中发送闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44409007/

相关文章:

php - 在 Laravel 5.1 中手动创建分页器

php - 我可以在 Laravel 的路由组中使用域和端口吗?

mysql - 使用 Laravel 队列时如何避免作业数据库表锁问题?

laravel - 回滚 Laravel 中的一项特定迁移

php - 使用laravel强制下载文件

sql-server - SQL Server服务代理: How to structure Conversations for a simple queue scenario?

php - 使用 Redis 的速率限制 laravel 队列

javascript - this 和 javascript 中的闭包(在 paper.js 中工作)

php - 为什么我从闭包中抛出的异常没有被捕获?

arrays - 函数中的闭包数组参数