从PHP异步发送FCM通知

从PHP异步发送FCM通知,php,asynchronous,nginx,slim,firebase-cloud-messaging,Php,Asynchronous,Nginx,Slim,Firebase Cloud Messaging,我正在使用PHP构建我的移动应用程序的API,当一些请求到达时,我需要向用户发送Firebase推送通知 但是,当我调用我的通知发送函数时,我的代码会阻塞,客户端在sendNotificaiton函数返回之前不会从服务器获得响应,这可能需要9秒钟,具体取决于Firebase的响应时间 有没有办法异步运行该函数?我使用的是Slim Framework 3,因此在运行sendNotification函数之前回显响应不是一个选项,因为我在路径的末尾使用了return$response->withJso

我正在使用PHP构建我的移动应用程序的API,当一些请求到达时,我需要向用户发送Firebase推送通知

但是,当我调用我的通知发送函数时,我的代码会阻塞,客户端在
sendNotificaiton
函数返回之前不会从服务器获得响应,这可能需要9秒钟,具体取决于Firebase的响应时间

有没有办法异步运行该函数?我使用的是Slim Framework 3,因此在运行
sendNotification
函数之前回显响应不是一个选项,因为我在路径的末尾使用了
return$response->withJson($data)

由于用户正在等待发送通知,因此应用程序似乎非常滞后,即使这是服务器的事情,因此在尝试向其他用户发送通知之前向用户发送响应似乎是一种可行的方法。非常感谢您的帮助


注意:我使用的是带有PHP7.0的Nginx服务器,给出了描述中的参数-不,没有,因为除非创建使用事件通知接口的CLI脚本,否则PHP不会公开任何类型的接口来处理异步任务。可以帮助您实现这一目标的库是。由于您在nginx后面使用
php fpm
,并且使用
return
返回一个对象,因此您甚至无法使用
fastcgi_finish_request()来“挂断”函数。一个选项是使用您填写的队列,向用户发送响应,然后在后台将队列“对话”给firebase。谢谢您提供的信息。我现在正在调查Gearman,我想我会同意的。还有其他队列库建议吗?我认为Gearman是唯一现成的解决方案。你也许可以用ZeroMQ和Iccle创造奇迹,但要用Gearman实现同样的目标,确实需要做很多工作。是的,你是对的。与Gearman和主管一起启动并运行一切。一切似乎都运转良好,让我们希望它在负载下也能表现良好:)谢谢!嗯,你自己做了所有事情,看到人们成功地解决了他们的问题让人耳目一新,我很高兴你成功了!祝你好运!:)