使用header(),是否立即发送标头,或者在完整脚本运行后发送标头


Using header(), does the header get sent instantly, or after the full script has run?

我正在使用一个外部服务,该服务从我的应用程序中轮询数据。这个外部服务的一个要求是,我必须在最多10秒后让它知道它的请求成功了。问题是,此服务连接到的脚本可能需要超过10秒才能执行。

我的问题是:当我通过标头发送标头时("HTTP/1.0 200 OK",true,200),外部服务会立即收到此响应吗?还是只有在我的脚本完全执行后才会收到?示例:

header('HTTP/1.0 200 OK', true, 200);
some_function_that_takes_20_seconds()

响应标头是立即发送还是仅在20秒后发送?

您可以在header()调用后立即调用flush()来显式发送标头,否则,我认为在刷新输出缓冲区或脚本完成之前(以先到者为准)不会发送标头。

不确定您是否已经解决了问题,但请尝试

ignore_user_abort(true);
set_time_limit(0);
header('HTTP/1.0 200 OK', true, 200);
flush();