我按顺序调用了几个函数(我无法编辑),但是有些函数会重定向用户,所以我永远不会进入下一个函数。
我正在调用第三方函数调用wp_redirect()
我可以阻止它,但接下来的行是exit;
我无法弄清楚如何绕过
我希望能够使用ob_
函数绕过它,但到目前为止还没有运气。
任何建议,hacky或其他,将非常感谢!
编辑:我有一个想法,我还没有尝试过 - 以某种方式产生新的流程来执行这些任务 - 最好的方法是做什么,等待每一个完成后再继续。
答案 0 :(得分:2)
我相信有可能获得php解释器的源代码...搞乱退出函数然后重新编译并在Web服务器上安装你的新自定义版本的php ...
答案 1 :(得分:1)
您可以使用runkit_function_redefine
。您需要确保可以修改php.ini文件中的内部函数,以便能够更改本机/内部函数。
我认为您需要确保的php.ini设置是runkit.internal_override
。
我没有测试过这个。
但是,由于exit
是一种语言结构,我甚至不确定即使使用上述功能也可以绕过它。
答案 2 :(得分:1)
我怕你不能。可以选择重新定义本机php函数,请参阅runkit_function_redefine。
但在评论中它也说:
语言结构 (eval,die,exit,isset,unset,echo等)可能会混淆 具有功能,即使使用也无法重命名或重新定义 runkit.internal_override。
答案 3 :(得分:0)
在wp_redirect中引发异常,并使用try-catch语句包装代码,然后检查异常消息是否包含您设置的消息并相应地返回响应,我已将此hack用于大多数插件,包括woocommerce,ultimatemember等...
示例:
ob_start();
try{
whatever code....
}catch(\Exception $e){
}
echo ob_get_clean();
答案 4 :(得分:-1)
最后,我使用cURL对具有不同GET参数的文件发出三个同步请求。