【发布时间】:2016-02-10 15:09:57
【问题描述】:
我是 Laravel 和 Api 开发的新手,我遇到了一个问题,我的 api 的工作流程是,用户将发布数据发送到 api,然后 api 获取该数据并将数据处理到数据库,现在有一个过程其中php等待30分钟。同时将数据插入两个不同的表中。 问题是据我所知,在该过程完成后,只有我可以将 json 响应发送回用户。但这样用户必须等待 30 分钟。
有没有办法让需要 30 分钟的进程在后台工作并在该进程启动时立即发送响应 json?
1) 我研究了队列,但是我将托管的 Web 服务器不会让我访问整个服务器来安装某些东西,它只会给我空间来存放我的文件。
我很困惑如何实现此功能,以便用户不必等待太多响应。
我会很感激的。
谢谢,
【问题讨论】:
-
将数据处理推迟到队列是执行此操作的实用方法。 Laravel 提供了
databasedriver for queues,这意味着你不需要安装额外的服务,如 beanstalk、redis 等来处理队列,所以如果托管服务提供商不允许你安装任何东西,你应该没问题。 -
谢谢博格丹,我研究过这个,我也想过使用队列,但是这 30 分钟内的一项任务是 api 调用谷歌云消息,那也行。此外,请您提供队列的链接。