<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            php語言

            PHP實現同步遠程Mysql的方法

            時間:2025-05-28 10:50:16 php語言 我要投稿
            • 相關推薦

            PHP實現同步遠程Mysql的方法

              由于公司的英文網站放置在美國,而這些網站的數據要與大陸的服務器數據同步。 同步時間在一天之內。下面是小編為大家帶來的PHP實現同步遠程Mysql的方法,歡迎閱讀。

              PHP實現同步遠程Mysql:

              需求:由于公司的英文網站放置在美國,而這些網站的數據要與大陸的服務器數據同步。 同步時間在一天之內。

              拿到需求之后,發現這兩個網站的MYSQL數據庫都不能遠程訪問(安全第一吧)。于是想起了 平時使用的csv文件批量錄入數據。于是嘗試使用CSV導入導出。

              導入到處框架如下:

              1首先將數據導出成CSV的格式。

              建立一文件,放置在中國服務器上:csv.php.其實就是一個導出函數,通過數據庫,表名和SQL語句來獲得數據。

              <?php

              /**

              * 輸出一個數據庫中的表到一個CSV文件中

              *

              * @param string Mysql數據庫的主機

              * @param string 數據庫名稱

              * @param string 數據庫中的表名

              * @param string 數據庫的連接用戶名

              * @param string 數據庫的連接密碼

              * @param string 數據庫的表名

              * @param string 數據庫的

              * @param string 錯誤頁面

              * @param string SQL語句

              *

              * @return text 返回CSV格式的內容

              *

              * @access public

              */

              function PMA_exportData(host,db,user,pass,filename,table, crlf, error_url, sql_query) {

              what="csv";

              csv_terminated=" ";

              csv_separator=",";

              csv_enclosed=" ";

              csv_escaped="&nbsp;";

              mysql_connect(host, user,pass) or die("不能連接數據庫,錯誤代碼如下:" . mysql_error());

              mysql_select_db(db);

              result = mysql_query(sql_query);

              fields_cnt = mysql_num_fields(result);

              cc="";

              //fp = fopen(filename, 'w');

              // 格式化數據

              while (row = mysql_fetch_row(result)) {

              schema_ = '';

              for (j = 0; j < fields_cnt; j++) {

              if (!isset(row[j]) || is_null(row[j])) {

              schema_ .="NULL"; //用什么來替換空值

              } elseif (row[j] == '0' || row[j] != '') {

              // loic1 :用引號包含字段值

              if (csv_enclosed == '') {

              schema_ .= row[j];

              } else {

              schema_ .= csv_enclosed

              . str_replace(csv_enclosed, csv_escaped . csv_enclosed, row[j])

              . csv_enclosed;

              }

              } else {

              schema_ .= '';

              }

              if (j < fields_cnt-1) {

              schema_ .= csv_separator;

              }

              } // end for

              // fwrite(fp,schema_ . csv_terminated);

              cc.=schema_ . csv_terminated;

              } // end while

              mysql_free_result(result);

              // fclose(fp);

              return cc;

              }

              ?>

              2.將CSV格式的內容導入到表中

              在美國服務器上建立個導入的文件,放置:import.php ,代碼如下:

              <?php

              /**

              * 從一個上傳的文件中將數據導入到一個表中

              *

              * @param string Mysql數據庫的主機

              * @param string 數據庫名稱

              * @param string 數據庫中的表名

              * @param string 數據庫的連接用戶名

              * @param string 數據庫的連接密碼

              * @param string 數據庫的表名

              *

              * @return bool 是否執行成功

              *

              * @access public

              */

              function uploadFileOfCsv(host,db,user,pass,table,content){

              mysql_connect(host, user,pass) or die("不能連接數據庫,錯誤代碼如下:" . mysql_error());

              mysql_select_db(db);

              result = mysql_query("select * from table");

              fields_cnt = mysql_num_fields(result);

              test2=array(array());

              rownum=0;

              log("提取的數據如下:<br>".content);

              fd1 = fopen ("C:test.csv",'a');

              fwrite(fd1,content);

              fclose(fd1);

              fp = fopen("C:test.csv", "r");

              while (buffer = fgets(fp,4096))

              {

              i++;

              tmp_arr = explode(",",buffer);

              if(trim(tmp_arr[0]) == ""){

              echo "<script language='javascript'>";

              echo "alert('第".i."行的ID空,請檢查!');";

              echo "location.href=document.referrer;";

              echo "</script>";

              exit;

              }

              query = "INSERT INTO db.table";

              query .=" values ( ";

              for(q=0;q<fields_cnt;q++){

              if(q==fields_cnt-1){

              tmp=tmp_arr[q];

              query.="'tmp');";

              }else{

              tmp=tmp_arr[q];

              query.="'tmp',";

              }

              }//end for(q=0;

              log2(query);

              mysql_query(query);

              }

              fclose(fp);

              return "OK";

              unlink("C:test.csv");

              }

              function log2(event = null){

              //global db;

              // global login;

              if(LOG_ENABLED){

              now = date("Y-M-d H:i:s");

              fd = fopen ("C:log.html",'a');

              log = now." "._SERVER["REMOTE_ADDR"] ." - event <br>";

              fwrite(fd,log);

              fclose(fd);

              }

              }

              ?>

              3調用函數執行導出

              在中國服務器上再建立一個 文件:test_export.php,調用前面的`csv.php的函數,然后將數據轉成CSV,然后臨時存到一個表單的textera中,注意表單提交的位置:

              <?php

              require_once("csv.php");

              host="localhost";

              db="project";

              user="root";

              pass="";

              //導出tb_contact表的數據為csv文件

              filename = 'file4.csv';

              cc=PMA_exportData( host,db,user,pass, filename,"tb_project_dvp", "", "test.php", "select * from tb_project_dvp") ;

              handle = fopen(filename, "rb");

              contents = fread(handle, filesize (filename));

              fclose(handle);

              ?>

              <form id="form1" name="form1" method="post" action="http://美國網站的地址/test2.php">

              <p>

              <textarea name="textarea" cols="180" rows="30"><?php echo cc?></textarea>

              <input type="hidden" name="action" value="1"/>

              </p>

              <p>

              <input type="submit" name="Submit" value="提交">

              </p>

              </form>

              再在美國服務器上防置如下文件用于接受上傳上來的數據,文件名為 test_import.php:

              <?php

              require_once("csv.php");

              require_once("import.php");

              host="localhost";

              db="wintopweb";

              user="root";

              pass="";

              if(_POST['action']=="1"){

              content=_POST['textarea'];

              echo uploadFileOfCsv(host,db,user,pass,"tb_project_dvp",content);

              }

              ?>

              最后 利用Windows-xp/nt/03 控制面版中自帶 任務計劃,調度執行中國服務器test_export.php文件即可


            【PHP實現同步遠程Mysql的方法】相關文章:

            PHP常用MySql操作的方法10-11

            php+mysql實現無限分類實例詳解07-23

            PHP常用MySql操作方法06-09

            PHP讀取MySQL數據的代碼方法10-21

            PHP讀取MySQL數據代碼方法08-29

            PHP 中 MySQL 數據庫異步查詢實現08-22

            WEB中使用PHP連接MySQL的方法09-27

            php頁面緩存實現方法07-20

            PHP實現多線程的方法08-02

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院