Фильтрация Soap Запрос в Codeigniter - PullRequest
1 голос
/ 05 февраля 2020

У меня есть код для получения данных о посещаемости отпечатков пальцев.

Это мой код:

public function upload_data_absen(){
    error_reporting(1);
    $IP             = $this->get_setting()->ip;
    $Key            = '0';
    $today          = date('Y-m-d');
    $all_data_absen = $this->db->get('data_absen')->num_rows();
    if($IP!=""){
    $Connect = fsockopen($IP, "80", $errno, $errstr, 1);
        if($Connect){
            $soap_request="
                            <GetAttLog>
                                <ArgComKey xsi:type=\"xsd:integer\">".$Key."</ArgComKey>
                                <Arg><PIN xsi:type=\"xsd:integer\">All</PIN></Arg>
                            </GetAttLog>";
            $newLine="\r\n";
            fputs($Connect, "POST /iWsService HTTP/1.0".$newLine);
            fputs($Connect, "Content-Type: text/xml".$newLine);
            fputs($Connect, "Content-Length: ".strlen($soap_request).$newLine.$newLine);
            fputs($Connect, $soap_request.$newLine);
            $buffer="";
            while($Response=fgets($Connect, 1024)){
                $buffer=$buffer.$Response;
            }
            $buffer = Parse_Data($buffer,"<GetAttLogResponse>","</GetAttLogResponse>");
            $buffer = explode("\r\n",$buffer);
            $count_buffer = count($buffer);
            if($all_data_absen<$count_buffer){
                for($a=0;$a<count($buffer);$a++){
                    $data = Parse_Data($buffer[$a],"<Row>","</Row>");

                    $PIN = Parse_Data($data,"<PIN>","</PIN>");
                    $DateTime = Parse_Data($data,"<DateTime>","</DateTime>");
                    $Verified = Parse_Data($data,"<Verified>","</Verified>");
                    $Status = Parse_Data($data,"<Status>","</Status>");
                    $date = date('Y-m-d',strtotime($DateTime));
                    if($date==$today){
                        $ins = array(
                                "pin"       =>  $PIN,
                                "date_time" =>  $DateTime,
                                "ver"       =>  $Verified,
                                "status"    =>  $Status
                                );
                        if (!$this->if_exist_check($PIN, $DateTime) && $PIN && $DateTime) {
                            $this->db->insert('data_absen', $ins);
                        }
                    }
                }
            return 'data Absen masuk: '.$count_buffer;
            }else{
                return false;
            }
        }else{
            return false;
        }
    } 
}

}

Приведенный выше код получить все данные, потому что в коде $ soap_request я получаю весь PIN-код и фильтрую все данные после того, как помещаю в массив и получаю данные по дате, но это очень медленно, потому что я получаю все данные с машины.

Могу ли я изменить soap просит просто получить машинные данные по дате, а не по ПИН-коду?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...