티스토리 뷰

한국도로공사 사고 API를 받아서 DB의 마지막 사고값이 바뀌었으면 안드로이드 어플리케이션으로 값을 GCM푸시 보내는 php 파일이다.

마지막 사고가 바뀌지않으면 php파일을 빠져나오지않고 loop를 타며 게속 API Request를 하게 된다.

<?php


        define("INCIDENT_API_URL","http://data.ex.co.kr/openapi/safeDriving/safeDrivingSupport?key=5460526240&type=json&incTpCd=00");

        define("HOST","en605.woobi.co.kr");

        define("USER","en605");

        define("PASSWD","1230");

        define("DB_NAME","en605");


        require_once("gcm_message.php");


        $url = INCIDENT_API_URL;


        class Incident{

                private $incid;

                private $analdtmc;

                private $startx;

                private $starty;


                public function getIncid(){

                        return $this->incid;

                }

                public function getAnaldtmc(){

                        return $this->analdtmc;

                }

                public function getStartx(){

                        return $this->startx;

                }

                public function getStarty(){

                        return $this->starty;

                }


                public function setIncid($param){

                        $this->incid = $param;

                }

                public function setAnaldtmc($param){

                        $this->analdtmc = $param;

                }

                public function setStartx($param){

                        $this->startx = $param;

                }

                public function setStarty($param){

                        $this->starty = $param;

                }

        }


        function getLastIncident(&$incident){

                $connect=mysql_connect(HOST, USER, PASSWD) or die( "Fail to connect to SQL Server");


                mysql_query("SET NAMES UTF8");

                // choose a database

                mysql_select_db(DB_NAME, $connect);


                // Start Session

                //session_start();


                //  Create a query sentence.


                //$sql = "select analdtmc, startx, starty from incident";

                $sql = "select incid from incident";


                // store the query execution result into the variable $result.

                $result = mysql_query($sql, $connect);


                //Save the the number of the records returned.

                $total_record = mysql_num_rows($result);


                //The last incident exists in DB.

                if($total_record == 1 ){

                        //move the pointer which will bring the record

                        mysql_data_seek($result, $i);


                        $row = mysql_fetch_array($result);

                        //$incident->setAnaldtmc($row[analdtmc]);

                        //$incident->setStartx($row[startx]);

                        //$incident->setStarty($row[starty]);

                        $incident->setIncid($row[incid]);

                }


                mysql_close($connect);

        }


        function deleteIncident(){

                $connect = mysql_connect(HOST, USER, PASSWD) or die("Fail to connect to SQL Server");


                mysql_select_db(DB_NAME, $connect);


                $sql = "DELETE FROM incident";


                $result = mysql_query( $sql, $connect);

                mysql_close($connect);


                return $result;


        }


        function insertIncident(&$incident){

                deleteIncident();


                //$analdtmc = $incident->getAnaldtmc();

                //$startx = $incident->getStartx();

                //$starty = $incident->getStarty();     


                $incid = $incident->getIncid();


                $connect = mysql_connect(HOST, USER, PASSWD) or die("Fail to connect to SQL Server");


                mysql_select_db(DB_NAME, $connect);


                //$sql = "INSERT INTO incident(analdtmc, startx, starty) VALUES('$analdtmc', '$startx', '$starty')";

                $sql =  "INSERT INTO incident(incid) VALUES('$incid')";



                $result = mysql_query( $sql, $connect);

                mysql_close($connect);


                return $result;

        }


        function getApiResult($url){

                $curl = curl_init();


                curl_setopt_array($curl, array(

                        CURLOPT_RETURNTRANSFER => 1,

                        CURLOPT_URL => $url

                ));


                $result = curl_exec($curl);

 echo "[  Requesting the Incident API, Time: ". date('Y-m-d h:i:sa',time()) . "  ]\n";

                curl_close($curl);


                //$json_array = json_decode($result);


                //return $json_array;   

                return $result;

        }


        /* The variable $incident is going to be used for store the last incident of incident table in DB  */

        $incident = new Incident;

        getLastIncident($incident);


        /*Testing variable */

        $testCnt = 0;


        while($testCnt < 10 ){

                /*Request The Incident API and get the information as the JSON format*/

                //$result_array = getApiResult($url);

                $result = getApiResult($url);

                $result_array = json_decode($result);


                /* Seperate JSON Array to the each JSON Object  */

                $list = $result_array->{"list"};

                $count = $result_array->{"count"};

                $code = $result_array->{"code"};


                /* get the last index of the incident list  */

                $cntNum = $count - 1;

                /* get the last incident from the incident array which we got from API Server */

                $lastIndex = $list[$cntNum];


                /* Compare whether the last incident of Table is the same as the last incident element of array */

                //if(($lastIndex->{"analDtmc"} != $incident->getAnaldtmc()) || ($lastIndex->{"startX"} != $incident->getStartx() ) || ($lastIndex->{"startY"} != $incident->getStarty()) )

                if( ($lastIndex->{"incId"} != $incident->getIncid()) && ($count != 0) )

                {

                        //Not the same, So you gotta put the last incident element to the Out table.    

                        //$incident->setAnaldtmc($lastIndex->{"analDtmc"});

                        //$incident->setStartx($lastIndex->{"startX"});

                        //$incident->setStarty($lastIndex->{"startY"});

                        echo "The LAST accident HAS CHANGED!! \n";

                        $incident->setIncid($lastIndex->{"incId"});


                        insertIncident($incident);


                        /* The status has changed. */


                        /* 1.Use the whole result, which is not json format, as a parameter of gcm_message.php */

                        $gcmMessage = new gcm_message;

                        $gcmMessage->sendMessage($result);

                        /* 2. Leave out the loop statement.  */

                        break;

                }else{

                        echo "The LAST accident hasn't CHANGED.\n";

                        /* continue the loop statement.  */

                        //continue;

                        $testCnt++;

                        $i = 0;

                        for($i; $i < 3; $i++){

                                echo ".";

                                sleep(1);

                        }

                        echo "\n";

                }

        }

?>

                                                                                                                                 128,2-16     바닥





댓글
댓글쓰기 폼
공지사항
Total
93,266
Today
0
Yesterday
12
«   2019/05   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
글 보관함