PHP不会立即等待响应/回复返回

时间:2012-07-26 11:03:44

标签: php

我有一个用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! 
?>

我该怎么做?

2 个答案:

答案 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();