一个cURL确实执行另一个

时间:2019-03-29 07:18:11

标签: php json curl php-curl

嘿,我正在使用PHP,cURL和JSON数据。

架构:

 FRONT <-> MIDDLE <-> BACK

问题位置:

  MIDDLE <-> BACK

说明:

在我的 MIDDLE 文件(PHP服务器)中,我调用一个函数,该函数为我的BACK文件(PHP服务器)创建一个 cURL

我遇到的问题是它将执行一个调用(HTTP cURL请求),但不会执行另一个调用,因此认为不执行的调用首先是调用。

你们可以指导我解决这个问题吗?

我尝试的方法:

  • 我研究了有关curl的信息(文章,视频),认为我可能必须像mysql一样处理它,如果我需要从同一服务器请求不同的项目(返回),则必须创建多个cURL连接。 / li>
  • 我已经实现了虚拟打印输出,以查看执行了哪些操作,并得出了在 description 部分中描述的结论。

注意:

下面您将找到MIDDLE,BACK和两个图像的代码:

  • 图像1是带有伪打印的代码,显示了一个cURL如何执行而另一个cURL不执行的代码。请注意文字 “什么回来了”
  • 图2是不执行cURL的方式。

中档:

注意: 看看在“ EXAMSOLVED ”情况下,我如何调用两个函数。这与图片1有关。

如果我评论与图像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:

enter image description here

图片2: enter image description here

任何指南都是好人。 谢谢。

1 个答案:

答案 0 :(得分:0)

好的,我已经发现了发生的事情!

调试:

  • 检查 MIDDLE 文件。
  • 检查函数定义中的参数 get_question_info
  • 现在为函数调用 http_post_back_server
  • 提供了检查参数
  • 有问题所在。