到目前为止我尝试过:
status_header(200);
http_response_code(200);
header[$_SERVER['SERVER_PROTOCOL'] . ' 200 OK']
header[$_SERVER['SERVER_PROTOCOL'] . ' 200 OK', true, 200);
function handle_200() {
status_header(200);
header($_SERVER['SERVER_PROTOCOL'] . ' 200 OK');
error_log('test'); // This never even runs
}
add_action('send_headers', 'handle_200', 1);
以上都没有奏效。我还检查过以确保在我尝试更改状态标头时,通过使用headers_sent()
检查并且返回FALSE
来发送当前标头。
我还尝试检查是否可以通过以下任何一种方式查看状态标题:
error_log(print_r(getallheaders(), true));
error_log(print_r(headers_list(), true));
但是既没有打印状态标题,但是如果我要做header('foo: bar')
之类的事情,那么会在标题列表中看到。
我完全失去了,任何指向正确方向的帮助都会非常感激。
话虽如此,可能有必要提一下,这个脚本是在Wordpress环境的主题功能中运行的。此外,脚本本身(我正在进行这些更改)在ob_start()
和ob_end_clean()
内运行(不确定是否相关)。
编辑:我刚刚发现,当我导致致命错误导致我的脚本过早结束时,Facebook会收到200 OK响应(具有讽刺意味)。这让我觉得问题是因为在ob_start
和ob_end_clean()
中运行脚本。这会延迟标题响应吗?
编辑2:这仍然没有得到解决。我有一个临时解决方案,它可以在35%的时间内成功发送响应。我正处于从webhook获取线索,从线索中检索信息然后执行SQL查询以检查之前是否已收到该线索的情况,如果有,exit(200)
。就这么简单,如何为已经存在的潜在客户花费时间?它不会!然而,我的服务器(根据Facebook的广告工具)仍有50%的时间超时(没有回复)?有些东西没有加起来。