我有一个用PHP编写的Web服务,iPhone应用程序连接到该服务。当应用程序调用该服务时,会向Apple的APNs服务器发送一系列通知消息,以便它可以将推送通知发送给该应用程序的其他用户。
在某些情况下,此过程可能非常耗时,我的应用必须等待很长时间才能收到回复。响应完全独立于发送到APNs服务器的通知消息的结果。
因此,无论是否已发送到APN的消息,我都希望Web服务将响应发送回应用程序。
我目前的代码:
<?
<...>
echo $chatID; // This has to be printed immediately
include('apns.php'); // Just invoke this, dont wait for response!
?>
我该怎么做?
答案 0 :(得分:3)
您应该关闭连接,然后继续这样处理:
set_time_limit(0);
ignore_user_abort(true);
//start the output buffer
ob_start();
//process what needs to be returned to browser
echo $chatID;
//tell the browser not to expect any more content and close the connection
header("Content-Length: " . ob_get_length());
header("Connection: close");
ob_end_flush();
ob_flush();
flush();
//continue processing
答案 1 :(得分:2)
致电flush();
;这将确保先前打印的任何数据立即发送到客户端。如果您使用输出缓冲,则需要先调用ob_flush();
。