Привет, ребята, я работаю с данными 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:
Изображение 2:
Любой гид был бы отличным парнем.
Спасибо.