Как синхронизировать данные вашей локальной базы данных с вашим живым сервером MySQL? - PullRequest
0 голосов
/ 16 октября 2018

В моем приложении я хочу передавать данные с одного сервера на множество клиентов и наоборот.Я сделал это с помощью контроллера «syncs» на стороне сервера, который содержит метод «export_data», который преобразует данные в передаваемый формат, и теперь я передаю эти данные в метод «post_data», который содержит ссылку на контроллер клиента «sync», который имеетметод с именем «import_data» теперь этот метод import_data начинает вставлять эти данные в таблицу, если столбец «is_sync» в таблице серверов установлен в «0», если он имеет значение «1», то он уже показывает данные синхронизации в виде сообщения предупреждения.

, но при отправке данных с сервера на клиент ничего не происходит.

all_set.php

   $.post('<?=base_url("syncs/export_data")?>',{ tablename : 
          'sma_class_set', ids : arr , async : true , cache : false}, 
           function(ret){
             alert(arr);
   });

syncs.php

function export_data(){

    $data = NULL;

    if ( $_POST ) {
        $table = $this->db->escape_str($_POST['tablename']);
        $sales_id = $_POST['ids'];
        $in_ids = implode(",", $sales_id);

        if ( isset( $sales_id ) && !empty( $sales_id ) ) {

            $sql = $this->db->query("SELECT * FROM `$table` WHERE `is_synced` = '0' AND `".$this->tables[$table]['exclude']."` IN($in_ids) ");

        } else {

            $sql = $this->db->query("SELECT * FROM `$table` WHERE `is_synced` = '0' ");
        }

        if ( !empty($sql->result_array()) ) {

            $final = $str_array = array();

            foreach ( $sql->result_array() as $sk => $sv){

                $col = array();

                foreach ($sv as $svk => $svl) {

                    if ( $svk != $this->tables[$table]['exclude'] ) {

                        array_push($col, "'$svl'");
                    }
                }

                array_push($final, explode("|", "(".implode(",", $col).")|"));
            }

            foreach ($final as $fk => $fv) {

                array_push($str_array, $fv[0]);
            }

            $str = implode(",", $str_array);

            $output = "INSERT INTO `$table`(".$this->tables[$table]['include'].") VALUES $str";


            if ( filter_var($this->post_data($output), FILTER_VALIDATE_INT) === false ) {

                $data = $this->post_data($output);

            } else {

                $this->db->query("UPDATE `$table` SET `is_synced` = '1' WHERE `".$this->tables[$table]['exclude']."` IN($in_ids) ");
                $data = "Data Synced Successfully";
            }

        } else {

            $data = "Already synced data";
        }
    } else {

        $data = "Error no values posted";
    }

    echo $data;
}
function post_data($qry){

    $qry = htmlspecialchars(urlencode($qry));
    $data = "qry=" . $qry;
    $ch = curl_init();
    curl_setopt( $ch, CURLOPT_URL,"http://localhost/BDS/pos_app/sync/import_data" );//Localhost url here
    curl_setopt( $ch, CURLOPT_AUTOREFERER, 1);
    curl_setopt ( $ch, CURLOPT_HTTPHEADER, array ( 'Content-length: ' . strlen($qry)+1 ) );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt( $ch, CURLOPT_POST,1);
    curl_setopt( $ch, CURLOPT_POSTFIELDS,$data);
    curl_setopt( $ch, CURLOPT_CRLF, 1);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

клиентский "sync.php", который теперь импортирует данные, используя функцию "import_data"

sync.php

function import_data(){

    $return = "";

    if ( isset( $_POST['qry'] ) && !empty( $_POST['qry'] ) ) {

        $qry = htmlspecialchars_decode( urldecode( $_POST['qry']));
        $this->db->trans_start();
        $this->db->query($qry);
        $insert_id = $this->db->insert_id();
        $this->db->trans_complete();

        if ($this->db->trans_status() === FALSE) {

            # Something went wrong.
            $this->db->trans_rollback();
            $return = "Error transaction could not be completed";
        } 
        else {

            # Everything is Perfect. 
            # Committing data to the database.
            $this->db->trans_commit();
            $return = $insert_id;
        }

    }else{

        $return = "Data do not received in proper way";
    }

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