在curl完成执行之前进行php重定向

在curl完成执行之前进行php重定向,php,jquery,html,curl,meta,Php,Jquery,Html,Curl,Meta,所以我们有一个系统可以改变你在显示器上看到的东西。此代码旨在将作为参数的命令发送到该JQuery页面 curl工作得很好,但是当我们注释掉处理XML文档重定向的if语句时。发生重定向,并且不执行Curl请求。我们需要理解为什么会发生这种情况,当我们删除重定向时,它会运行curl请求。当重定向到位时,不会执行curl请求 请帮助查找此问题的原因和纠正问题的方法,我们必须保留重定向,但如果有更好的方法运行curl请求,即不使用curl,而是使用一些非常好的方法,则将测试任何建议 <html&g

所以我们有一个系统可以改变你在显示器上看到的东西。此代码旨在将作为参数的命令发送到该JQuery页面

curl工作得很好,但是当我们注释掉处理XML文档重定向的if语句时。发生重定向,并且不执行Curl请求。我们需要理解为什么会发生这种情况,当我们删除重定向时,它会运行curl请求。当重定向到位时,不会执行curl请求

请帮助查找此问题的原因和纠正问题的方法,我们必须保留重定向,但如果有更好的方法运行curl请求,即不使用curl,而是使用一些非常好的方法,则将测试任何建议

<html>
<head>
<?php
    ob_implicit_flush(false);
    $argument = $_GET["argument"];
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, "http://example.com/sub/page.html?api_key=**********&device_id=************&argument=".$argument."");
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_exec($ch);
    curl_close($ch);

  if($argument == 1) {
       echo '<META http-equiv="refresh" content="0;URL=http://adloc8tor.com/ussd/service1.xml">';
  } else if($argument == 2) {
       echo '<META http-equiv="refresh" content="0;URL=http://adloc8tor.com/ussd/service2.xml">';
  } else if($argument == 3) {
       echo '<META http-equiv="refresh" content="0;URL=http://adloc8tor.com/ussd/service3.xml">';
  } else if($argument == 4) {
       echo '<META http-equiv="refresh" content="0;URL=http://adloc8tor.com/ussd/service4.xml">';
  }
?>
</head>
</html>

从我所看到的情况来看,curl请求可能还没有完成,这是在页面进行重选之前的事情。为什么不从curl请求中获取一个返回值,并将其作为后面if语句的先决条件

即:


从你的观点我可以得出以下几点

PHP程序以顺序执行的方式运行,所以显然,curl执行将在第一步运行,然后对XML文档进行重定向。 这是因为由于curl执行时间较长

确保在curl成功后重定向页面

$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($status == 200){
    if($argument == 1) {
        echo '<META http-equiv="refresh" content="0;URL=http://adloc8tor.com/ussd/service1.xml">';
    } else if($argument == 2) {
        echo '<META http-equiv="refresh" content="0;URL=http://adloc8tor.com/ussd/service2.xml">';
    } else if($argument == 3) {
        echo '<META http-equiv="refresh" content="0;URL=http://adloc8tor.com/ussd/service3.xml">';
    } else if($argument == 4) {
        echo '<META http-equiv="refresh" content="0;URL=http://adloc8tor.com/ussd/service4.xml">';
    }
}

你的问题不清楚。好吧,我把你的建议添加到文件中了。当运行edit时,它仍然执行相同的操作,进入Status if语句并在没有完成Curl执行的情况下运行重定向您是否期望Curl请求的结果?该curl请求是否会导致一些可以监视的操作并返回返回值?curl请求没有返回值。只需将信息推送/发布到预设的Jquery html文件中,该文件就可以完美地工作。但是这个需要的文件在Curl发布到Jquery文档之前一直在重定向。我在META重定向上花了3秒钟的时间,现在它为发布提供了足够的时间,我还使用了您的状态检查来帮助您。谢谢你的帖子@RamRaiderThanks获得了响应,所以是的,我把它放在了代码中,它仍然跳过了发布/执行Jquery页面。
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($status == 200){
    if($argument == 1) {
        echo '<META http-equiv="refresh" content="0;URL=http://adloc8tor.com/ussd/service1.xml">';
    } else if($argument == 2) {
        echo '<META http-equiv="refresh" content="0;URL=http://adloc8tor.com/ussd/service2.xml">';
    } else if($argument == 3) {
        echo '<META http-equiv="refresh" content="0;URL=http://adloc8tor.com/ussd/service3.xml">';
    } else if($argument == 4) {
        echo '<META http-equiv="refresh" content="0;URL=http://adloc8tor.com/ussd/service4.xml">';
    }
}