중첩 배열로 json 객체를 구문 분석하여 데이터베이스에 업로드하는 가장 효율적인 방법입니다.

Greekatos

나는 PHP에서 다소 새로운 것이며 중첩 배열로 json 객체를 업로드하고 데이터베이스에 업로드하는 가장 효율적인 방법을 찾고있었습니다. 내 json 객체는 다음과 같습니다.

"FINAL_entries": [
    {
      "serverIPAddresss": "116.202.80.27",
      "waitTimings": 85.62899999570101,
      "startedDateTimee": "2020-12-27T15:39:45.340Z",
      "response": {
        "StatusResult": 200,
        "StatusTextResult": "",
        "header": [
          {
            "name": "content-type",
            "value": "text/html;charset=UTF-8"
          },
          {
            "name": "cache-control",
            "value": "public, max-age=160.000, stale-if-error=172800"
          },
          {
            "name": "expires",
            "value": "Sun, 27 Dec 2020 15:42:02 GMT"
          },
          {
            "name": "age",
            "value": "21"
          }
        ]
      },
      "request": {
        "methods": "GET",
        "url": "www.sport-fm.gr",
        "header": []
      }
    },
    {
      "serverIPAddresss": "116.202.80.27",
      "waitTimings": 69.66299999350682,
      "startedDateTimee": "2020-12-27T15:39:34.308Z",
      "response": {
        "StatusResult": 200,
        "StatusTextResult": "",
        "header": [
          {
            "name": "content-type",
            "value": "text/html;charset=UTF-8"
          },
          {
            "name": "cache-control",
            "value": "public, max-age=160.000, stale-if-error=172800"
          },
          {
            "name": "expires",
            "value": "Sun, 27 Dec 2020 15:39:18 GMT"
          },
          {
            "name": "age",
            "value": "174"
          }
        ]
      },
      "request": {
        "methods": "GET",
        "url": "www.sport-fm.gr",
        "header": []
      }
    },
    {
      "serverIPAddresss": "116.202.80.27",
      "waitTimings": 68.22399999810942,
      "startedDateTimee": "2020-12-27T15:39:30.411Z",
      "response": {
        "StatusResult": 200,
        "StatusTextResult": "",
        "header": [
          {
            "name": "content-type",
            "value": "text/html;charset=UTF-8"
          },
          {
            "name": "cache-control",
            "value": "public, max-age=120.000, stale-if-error=172800"
          },
          {
            "name": "expires",
            "value": "Sun, 27 Dec 2020 15:39:47 GMT"
          },
          {
            "name": "age",
            "value": "100"
          }
        ]
      },
      "request": {
        "methods": "GET",
        "url": "www.sport-fm.gr",
        "header": []
      }
    },
    {
      "serverIPAddresss": "116.202.80.27",
      "waitTimings": 95.72899999656156,
      "startedDateTimee": "2020-12-27T15:39:21.846Z",
      "response": {
        "StatusResult": 200,
        "StatusTextResult": "",
        "header": [
          {
            "name": "content-type",
            "value": "text/html;charset=UTF-8"
          },
          {
            "name": "cache-control",
            "value": "public, max-age=160.000, stale-if-error=172800"
          },
          {
            "name": "expires",
            "value": "Sun, 27 Dec 2020 15:41:28 GMT"
          },
          {
            "name": "age",
            "value": "31"
          }
        ]
      },
      "request": {
        "methods": "GET",
        "url": "www.sport-fm.gr",
        "header": []
      }
    },
    {
      "serverIPAddresss": "",
      "waitTimings": 0,
      "startedDateTimee": "2020-12-27T15:39:21.824Z",
      "response": {
        "StatusResult": 0,
        "StatusTextResult": "",
        "header": []
      },
      "request": {
        "methods": "POST",
        "url": "prod-sb-appanalytics-us1.servicebus.windows.net",
        "header": [
          {
            "name": "Content-Type",
            "value": "application/atom+xml;type=entry;charset=UTF-8"
          }
        ]
      }
    }

객체를 구문 분석하는 내 코드는 다음과 같습니다.

<?php
    session_start();
    
    function alertBox($message) { 
        
        echo "<script>alert('$message');</script>"; 
    } 
    
    include 'debug.php';
    
    
    if($_SERVER['REQUEST_METHOD'] === 'POST'){
        
        $harfile = $_POST["arapis"];
        $array = json_decode($harfile, true);   
        $client_id = $_SESSION['client_id'];
        $IP = $_POST["arap"];
        $array_ip = json_decode($IP,true);
        
        //IP address analyze    
        $IP_address = $array_ip[0];
        $IP_latitude= $array_ip[1];
        $IP_longitude= $array_ip[2];
        $IP_ISP= $array_ip[3];
        
        //date, time and day
        $my_date = date("Y-m-d H:i:s");
        $day = date('l',strtotime($my_date));
        
        //harfiles insert
        $result = "INSERT INTO harfiles(user_id, IP, ISP, latitude,longitude,dates_times,day) VALUES ('$client_id', '$IP_address','$IP_ISP','$IP_latitude','$IP_longitude','$my_date','$day')";     
        mysqli_query($db,$result);
        
        
        //Get har_id 
        $har_id = mysqli_query($db,"SELECT har_id FROM harfiles ORDER BY har_id DESC LIMIT 1");
        $har_id = mysqli_fetch_assoc($har_id);
        $har_id = $har_id['har_id'];
        
        
    
    
        
        
        if(isset($array['FINAL_entries'])){
            foreach($array['FINAL_entries'] as $data){
                if(isset($data['serverIPAddresss'])){
                    $entries_serverIP = $data['serverIPAddresss'];  
                }
                
                if(isset($data['waitTimings'])){
                    $waitTimings = $data['waitTimings'];
                }
                
                if(isset($data['startedDateTimee'])){
                    $startedDateTime = $data['startedDateTimee'];
                }
                
                if(isset($data['response']['StatusResult'])){
                    $StatusResult = $data['response']['StatusResult'];
                }
                
                if(isset($data['response']['StatusTextResult'])){
                    $StatusTextResult = $data['response']['StatusTextResult'];
                }
                
                if(isset($data['response']['header'])){
                    
                    foreach($data['response']['header'] as $data => $value){
                        if($value['name'] == "content-type" || $value['name'] == "Content-Type") {
                            $response_value_content_type = $value['value'];
                        }
                        
                        if($value['name'] == "cache-control" || $value['name'] == "Cache-Control"){
                            $response_value_cache_control = $value['value'];
                        }
                        
                        if($value['name'] == "pragma" || $value['name'] == "Pragma"){
                            $response_value_pragma = $value['value'];
                        }
                        
                        if($value['name'] == "expires" || $value['name'] == "Expires"){
                            $response_value_expires = $value['value'];                          
                        }
                        
                        if($value['name'] == "age" || $value['name'] == "Age" ){
                            $response_value_age = $value['value'];
                        }
                        
                        if($value['name'] == "last-modified" || $value['name'] == "Last-Modified"){
                            $response_value_last_modified = $value['value'];
                        }
                        
                    }
                    
                }
                
                if(isset($data['request']['methods'])){
                    $request_method = $data['request']['methods'];
                }
                
                if(isset($data['request']['url'])){
                    $request_urls = $data['request']['url'];
                }
                
                
                if(isset($data['request']['header'])){
                    foreach($data['request']['header'] as $data => $value){
                        if($value['name'] == "content-type" || $value['name'] == "Content-Type"){
                            $request_value_content_type = $value['value'];
                        }
                        
                        if($value['name'] == "cache-control" || $value['name'] == "Cache-Control"){
                            $request_value_cache_control = $value['value'];
                        }
                        
                        if($value['name'] == "pragma" || $value['name'] == "Pragma"){
                            $request_value_pragma = $value['value'];
                        }
                        
                        if($value['name'] == "host" || $value['name'] == "Host"){
                            $request_value_host = $value['value'];
                        }
                        
                    }
                }
                
                if(isset($entries_serverIP) != true){
                    $entries_serverIP = "null";
                }
                
                if(isset($waitTimings ) != true){
                    $waitTimings  = "null";
                }
                
                if(isset($startedDateTime) != true){
                    $startedDateTime = "null";
                }
                
                if(isset($StatusResult) != true){
                    $StatusResult = "null";
                }
                
                if(isset($StatusTextResult) != true){
                    $StatusTextResult= "null";
                }
                
                if(isset($request_method) != true){
                    $request_method = "null";
                }
                
                if(isset($request_urls) != true){
                    $request_urls = "null";
                }
                
                if(isset($request_value_content_type ) != true){
                    $request_value_content_type = "null";
                }
                
                if(isset($request_value_cache_control ) != true){
                    $request_value_cache_control = "null";
                }
                
                if(isset($request_value_pragma ) != true){
                    $request_value_pragma = "null";
                }
                
                if(isset($request_value_host ) != true){
                    $request_value_host = "null";
                }
                
                if(isset($response_value_content_type) != true){
                    $response_value_content_type = "null";
                }
                
                if(isset($response_value_cache_control ) != true){
                    $response_value_cache_control = "null";
                }
                
                if(isset($response_value_pragma ) != true){
                    $response_value_pragma = "null";
                    }
                
                if(isset($response_value_expires ) != true){
                    $response_value_expires = "null";
                }
                
                if(isset($response_value_age ) != true){
                    $response_value_age = "null";
                }
                
                if(isset($response_value_last_modified) != true){
                    $response_value_last_modified = "null";
                }
                
                
                //mysqli_stmt_execute($stmt);
                mysqli_query($db,"INSERT INTO hardata(har_id, entries_serverIPaddress, entries_startedDate, entries_timings, user_id, request_method, request_urls, Rq_Content_Type, Rq_Cache_Control, Rq_Pragma, Rq_Host, response_Status, response_Status_Text, Rs_Content_Type, Rs_Cache_Control, Rs_Pragma, Rs_Expires, Rs_Age, Rs_Last_Modified) VALUES('$har_id', '$entries_serverIP', '$startedDateTime', '$waitTimings', '$client_id', '$request_method', '$request_urls', '$request_value_content_type', '$request_value_cache_control', '$request_value_pragma', '$request_value_host', '$StatusResult', '$StatusTextResult', '$response_value_content_type', '$response_value_cache_control', '$response_value_pragma', '$response_value_expires','$response_value_age', '$response_value_last_modified')");
            }
        }
        
        
        
        alertBox("Insertion done");
        //header("Location:index.php");
    }
    
?>

이 코드의 문제점은 값이 정의되면 값이 없어도 정의 된 상태로 남아 있다는 것입니다. 예를 들어, 내 json 객체에서 마지막 응답 헤더는 비어 있지만 $ response_value_content_type과 같은 응답 헤더의 값은 이전 값을 유지합니다. 그 코드의 또 다른 문제는 내 생각에 삽입이 너무 느리다고 생각합니다. 의견을 주시기 바랍니다. 미리 감사드립니다!

아지 봄

겸손한 생각으로는 두 가지를 바꿔야합니다

첫째, 가치는 정의 된 상태로 유지됩니다.

이 문제를 해결하려면 다음과 같이 조건 정의에 다른 항목을 추가해야합니다.

// old version
if (isset($data['serverIPAddresss'])){
    $entries_serverIP = $data['serverIPAddresss'];  
}
// new version
if (isset($data['serverIPAddresss'])){
    $entries_serverIP = $data['serverIPAddresss'];  
} else {
    $entries_serverIP = null;  
}

그런 다음이 조건을 제거하십시오.

if (isset($entries_serverIP) != true){
    $entries_serverIP = "null";
}

둘째, 느립니다

당신은 메이크업에 의해 모두 삽입 한 다음 바로이 일에 시간을 절약 할 수 있고 그 DB에서 여러 행을 추가하는 올바른 방법이다, 한 번 실행이 예에서 보면 그 하나 개의 쿼리이 문제를 해결할 수
의 insted를

INSERT INTO table(c1,c2,...)
VALUES 
   (v11,v12,...);

INSERT INTO table(c1,c2,...)
VALUES 
   (v21,v22,...);

그리고 ...
이 쿼리를 시도

INSERT INTO table(c1,c2,...)
VALUES 
   (v11,v12,...),
   (v21,v22,...),
    ...
   (vnn,vn2,...);

더 많은 예를 들어

대신 :

if ($value['name'] == "content-type" || $value['name'] == "Content-Type") {
    $response_value_content_type = $value['value'];
}

// and

if (isset($response_value_content_type) != true){
    $response_value_content_type = "null";
}

그냥 해

if ($value['name'] == "content-type" || $value['name'] == "Content-Type") {
    $response_value_content_type = $value['value'];
} else {
    $response_value_content_type = "null";
}

그리고 이것 대신

if(isset($data['request']['header'])){
    foreach($data['request']['header'] as $data => $value){
        if($value['name'] == "content-type" || $value['name'] == "Content-Type"){
            $request_value_content_type = $value['value'];
        }
        
        if($value['name'] == "cache-control" || $value['name'] == "Cache-Control"){
            $request_value_cache_control = $value['value'];
        }
        
        if($value['name'] == "pragma" || $value['name'] == "Pragma"){
            $request_value_pragma = $value['value'];
        }
        
        if($value['name'] == "host" || $value['name'] == "Host"){
            $request_value_host = $value['value'];
        }
    }
}

이 작업을 수행

if(isset($data['request']['header'])){
    if (empty($data['request']['header'])) {
        $request_value_content_type = null;
        $request_value_cache_control = null;
        $request_value_pragma = null;
        $request_value_host = null;
    } else {
        foreach($data['request']['header'] as $data => $value){
            if($value['name'] == "content-type" || $value['name'] == "Content-Type"){
                $request_value_content_type = $value['value'];
            }
            
            if($value['name'] == "cache-control" || $value['name'] == "Cache-Control"){
                $request_value_cache_control = $value['value'];
            }
            
            if($value['name'] == "pragma" || $value['name'] == "Pragma"){
                $request_value_pragma = $value['value'];
            }
            
            if($value['name'] == "host" || $value['name'] == "Host"){
                $request_value_host = $value['value'];
            }
        }
    }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관