收藏 分销(赏)

PHP实现Mysql远程同步代码.doc

上传人:xrp****65 文档编号:7027230 上传时间:2024-12-25 格式:DOC 页数:7 大小:34.50KB
下载 相关 举报
PHP实现Mysql远程同步代码.doc_第1页
第1页 / 共7页
PHP实现Mysql远程同步代码.doc_第2页
第2页 / 共7页
点击查看更多>>
资源描述
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_insert = '';         for ($j = 0; $j < $fields_cnt; $j++) {             if (!isset($row[$j]) || is_null($row[$j])) {                 $schema_insert .="NULL";  //用什么来替换空值             } elseif ($row[$j] == '0' || $row[$j] != '') {                 // loic1 :用引号包含字段值                             if ($csv_enclosed == '') {                     $schema_insert .= $row[$j];                 } else {                     $schema_insert .= $csv_enclosed                                    . str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, $row[$j])                                    . $csv_enclosed;                 }             } else {                 $schema_insert .= '';             }             if ($j < $fields_cnt-1) {                 $schema_insert .= $csv_separator;             }         } // end for  //  fwrite($fp,$schema_insert . $csv_terminated);    $cc.=$schema_insert . $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文件即可  
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服