如何先打印http响应,然后再执行繁重的数据库操作


How to print http response first and do the heavy db operations later?

我正在实现一个移动api。其中一个请求处理json数据,然后将预定义的消息(独立于计算)返回给设备。我用kohana 3。我如何首先返回http响应,然后进行计算?您认为使用消息队列和单独的程序来处理和数据库操作怎么样?

一个选择是使用gearman。有一个Kohana gearman模块,是由Kohana的一个开发者制作的。

也许你可以帮助flush()函数,它发送缓冲区(和头也)。但是flush()不保证头消息发送,因为php和web浏览器之间保持一个web服务器(如apache)

我不确定我理解你的问题,但如果你想缓冲输出,你可以使用ob_start()ob_get_clean()

我想你可能在找像

这样的东西
ignore_user_abort(true)
http://www.php.net/manual/en/function.ignore-user-abort.php

发出调用后,您可以将响应发送回浏览器,并在连接关闭并且客户端离开做其他事情之后完成计算/记录。

这使您可以做一些快速处理,而无需挂起客户端或使用外部进程来处理您的任务