Один CURL выполняет, другой выполняет - PullRequest
0 голосов
/ 29 марта 2019

Привет, ребята, я работаю с данными PHP, cURL и JSON.

Архитектура:

 FRONT <-> MIDDLE <-> BACK

Проблемное место:

  MIDDLE <-> BACK

Описание:

В моем файле MIDDLE (сервер PHP) я вызываю функцию, которая создает cURL для моего файла BACK (сервер PHP).

Проблема, с которой я столкнулся, заключается в том, что он выполнит один из вызовов (HTTP-запросы cURL), но не другой, учитывая, что первый вызов не выполняется.

Можете ли вы, ребята, направить меня по этому вопросу, как я могу решить это?

Что я пробовал:

  • Я изучаю (статьи, видео) информацию о curl, думая, что, возможно, мне пришлось справиться с этим как в mysql, когда мне нужно было создать несколько соединений cURL, если мне нужно было запрашивать разные элементы с одного и того же сервера (BACK).
  • Я реализовал фиктивные распечатки, чтобы посмотреть, что выполнено, и пришел к выводу, который я описал в части description .

Примечание:

Ниже вы найдете код для MIDDLE, BACK и двух изображений:

  • Изображение 1 - это код с фиктивной распечаткой, показывающий, как один 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;

?>

ОБРАТНЫЙ ФАЙЛ:

Примечание: посмотрите на фиктивное эхо, которое я имею в начале файла

<?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 голосов
/ 01 апреля 2019

ОК, я обнаружил, что происходит !!!

Отладка:

  • Проверка СРЕДНИЙ файл.
  • Проверьте параметры в определении функции get_question_info
  • Теперь проверьте аргументы, переданные для вызова функции http_post_back_server
  • В этом проблема.
...