<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. PHP實現同步遠程Mysql的方法

    時間:2025-12-25 16:48:58 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="";

      /pic/p>

      /pic/p>

      while (row = mysql_fetch_row(result)) {

      schema_ = '';

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

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

      schema_ .="NULL"; /pic/p>

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

      /pic/p>

      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;

      }

      } /pic/p>

      /pic/p>

      cc.=schema_ . csv_terminated;

      } /pic/p>

      mysql_free_result(result);

      /pic/p>

      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',";

      }

      }/pic/p>

      log2(query);

      mysql_query(query);

      }

      fclose(fp);

      return "OK";

      unlink("C:test.csv");

      }

      function log2(event = null){

      /pic/p>

      /pic/p>

      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="";

      /pic/p>

      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="/pic/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操作的方法03-13

    PHP讀取MySQL數據代碼方法02-20

    php+mysql實現無限分類實例詳解09-11

    PHP常用MySql操作方法12-17

    PHP讀取MySQL數據的代碼方法02-16

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

    WEB中使用PHP連接MySQL的方法01-23

    PHP實現多線程的方法03-19

    php頁面緩存實現方法12-13

    • 相關推薦
    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人