찾다
php教程php手册PHP实现同步远程Mysql

PHP实现同步远程Mysql

Jun 13, 2016 am 09:33 AM
mysqlphp회사동기식성취하다놓다~의웹사이트영문원격필요

 PHP实现同步远程Mysql:

需求:由于公司的英文网站放置在美国,而这些网站的数据要与大陆的服务器数据同步。 同步时间在一天之内。
拿到需求之后,发现这两个网站的MYSQL数据库都不能远程访问(安全第一吧)。于是想起了 平时使用的csv文件批量录入数据。于是尝试使用CSV导入导出。

导入到处框架如下:

1首先将数据导出成CSV的格式。
建立一文件,放置在中国服务器上:csv.php.其实就是一个导出函数,通过数据库,表名和SQL语句来获得数据。

/**
* 输出一个数据库中的表到一个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=" ";


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 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 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 ,代码如下:

/**
* 从一个上传的文件中将数据导入到一个表中
*
* @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("提取的数据如下:
".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 "";
exit;


query = "INSERT INTO db.table";
query .=" values ( ";
for(q=0;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
";
fwrite(fd,log);
fclose(fd);
}
}

 

?>
3调用函数执行导出

在中国服务器上再建立一个 文件:test_export.php,调用前面的csv.php的函数,然后将数据转成CSV,然后临时存到一个表单的textera中,注意表单提交的位置:

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); 

?>









 

再在美国服务器上防置如下文件用于接受上传上来的数据,文件名为 test_import.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文件即可

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경