一个 cURL 执行另一个执行

One cURL does executing the other does

大家好,我正在处理 PHP、cURL 和 JSON 数据。

架构:

 FRONT <-> MIDDLE <-> BACK

问题所在:

  MIDDLE <-> BACK

描述:

在我的 MIDDLE 文件(PHP 服务器)中,我调用了一个函数,该函数将 cURL 生成到我的 BACK 文件( PHP 服务器)。

我遇到的问题是它会执行其中一个调用(HTTP cURL 请求)而不执行另一个调用,未执行的是第一个调用。

你们能指导我解决这个问题吗,我该如何解决?

我的尝试:

注:

下面是MIDDLE、BACK和两张图片的代码:

中间文件:

注意: 看看在 "EXAMSOLVED" 情况下我如何调用两个函数。与图一有关

如果我注释掉与图2相关的第二个函数

<?php

/*------------------------------------------------------------------*/

include "exam_grading_system.php";

/*------------------------------------------------------------------*/

function http_post_back_server($url, $data)
{
    $obj = curl_init();

    curl_setopt($obj, CURLOPT_URL, $url);
    curl_setopt($obj, CURLOPT_POST, strlen($data));
    curl_setopt($obj, CURLOPT_POSTFIELDS, $data);
    curl_setopt($obj, CURLOPT_RETURNTRANSFER, true);

    $ans = curl_exec($obj);

    curl_close($obj);

    return $ans;
}

//--------------------------------------------------------------------

function get_question_info($ulr, $id_question)
{
    //Set UP Request Packet
    $askDB->case = "GradingInfo";
    $askDB->id_question = $id_question;

    //Convert Packet to JSON format
    $askDB = json_encode($askDB);

    //echo $askDB;

    //Ask Back Server
    $BK_Srv_Ans = http_post_back_server($url,$askDB);

    return $BK_Srv_Ans;
}

//--------------------------------------------------------------------

/*URL TO BACK SERVER*/
$url_myserver = "https: MY URL ";

/*GLOBAL VARS*/
$back_ans ="";

/*RECEIVE DATA FROM POST REQUEST*/
$indata = file_get_contents("php://input");
$data = json_decode($indata,true);

/*MAKE REQUEST TO SERVERS*/
switch($data["case"]){
    case "_EXAMSOLVED_":
        $questions_Info = get_question_info($url_myserver, $data["id_question"]);
        //$indata = Grading($data, $questions_Info);
        //$back_ans = http_post_back_server($url_myserver,$indata);
        break;
    default:
        $back_ans = http_post_back_server($url_myserver,$indata);
        break;
}

/*ANSWER BACK TO FRON END*/
echo $back_ans;

?>

后备文件:

注意:看看我在文件开头的虚拟 echo 语句

<?php

/*------------------------------------------------------------------*/
include "Prof_backend_tools.php";
include "Student_backend_tools.php";
/*------------------------------------------------------------------*/


echo "what back gets: ";

/*RECEIVING DATA FROM POST REQUEST */
$indata = file_get_contents("php://input");

/*DATA TO JSON OBJ*/
$indata = json_decode($indata, true);

/*CHECKING DATABASE CONNECTIVITY */

if(mysqli_connect_error())
{ echo "Connection Error: ".mysqli_connect_error; }

switch($indata["case"])
{
  case "_EXAMSOLVED_":
    echo store_exam_slutions($indata,DB_s());
    break;
  case "GradingInfo":
    echo "--IN BACK--";
    //echo Needed_data_for_grading($indata);
    break;
  default:
    echo "NADA";
    break;
}

?>

图片1:

图2:

任何指南都会很棒。 谢谢。

好的,我发现发生了什么!!!

调试中:

  • 检查中间文件。
  • 检查函数定义中的参数get_question_info
  • 现在检查函数调用的参数 http_post_back_server
  • 问题就出在这里。