php中什么是异步回调,php – 节俭异步函数中的回调?

本文探讨了如何在Thrift框架中处理计算密集型任务,以避免PHP客户端会话阻塞。提出了从事件驱动模型到轮询模型的转换,包括在服务器端异步处理任务并在客户端定期检查任务状态的策略。建议了两种实现方法,一种是通过oneway调用,另一种是使用浏览器定期查询任务状态,以保持会话的非阻塞特性。
摘要由CSDN通过智能技术生成

Roberto,不幸的是Thrift框架没有这样的内置功能。可能有许多替代方案,具体取决于您希望PHP客户端会话在您通常等待计算密集型Thrift服务器应答的时间(如果您没有单独使用)。

我现在只能想象一下,在编码一个用户(或多个并行用户)可以触发计算密集型任务的Web应用程序的情况下,您想向所述用户提供一些反馈同时说任务流失。

从一开始,您绝对正确地尝试避免您想要避免的解决方案。您的PHP客户端会话无法保护回调界面,而不会阻止(除非您尝试使用pcntl_fork或其他PHP threading band-aid更深入挖掘您的洞)

最简单的和IMHO最好的方式是从事件驱动的模型(我想在服务器完成时被通知)到轮询模型的两个切换(我会定期询问服务器是否完成)。有几种实现轮询模型的方法,在服务器和客户端都有多个实现选项,例如:

>在调用阶段:

> PHP客户端会话分配唯一​​的job_id值;会话然后使异步的oneway调用void compute(…,job_id)到计算密集型Thrift服务器,

– 要么 –

> PHP客户端会话使得计算密集型Thrift服务器同步调用job_id start_compute(…)服务器分配唯一的job_id值,然后在单独的线程/进程中产生实际的计算密集型任务,立即返回到具有已分配job_id的PHP客户端会话

>在计算阶段:

> PHP客户端会话继续通过对计算密集型Thrift服务器的同步状态get_status(job_id)调用来定期检查计算密集型作业的状态,

– 要么 –

> PHP客户端会话立即终止,以便在将job_id传递到浏览器之后释放宝贵的资源,并指示浏览器定期检查计算密集型作业job_id的状态(例如通过META REFRESH或通过XHR (AJAX)请求从Javascript等);浏览器检查产生一个简单的PHP客户端会话,该会话执行对计算密集型Thrift服务器的同步状态get_status(job_id)调用,在将状态(无论哪个可能)转发到浏览器之后立即终止

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值