本文实例为大家分享了PHP文件多服务器同步工具,具体内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
<?php
header( 'Content-type:text/html;charset=utf-8' );
//文件名称:PHP文件多服务器同步工具
//文件作用:本文件所在服务器为主服务器,其它文件所在服务器可作分流或者备份。本文件需要jQuery库。你也可以外链别人的
//最后修改时间:2016-06-30
//BY:strwei
if (! empty ( $_POST [ 'files' ])) sync();
function sync(){
$aFiles = explode ( "\n" , $_POST [ 'files' ]);
//var_dump($aFiles);exit;
foreach ( $aFiles as $k => $v ){
if ( strlen ( $v ) <= 5) unset( $aFiles [ $k ]);
}
array_filter ( $aFiles );
if ( empty ( $aFiles )) {
echo '没有文件' ; exit ;
}
$aFTPServers = array (
'server1' => array ( 'strwei.com' , 'FTP用户名' , 'FTP密码' , '打开FTP进去时的默认目录' ), //ftp地址、用户名,密码、FTP打开此站点时的默认目录
//'server2' => array('yy.9.je','FTP用户名','FTP密码','打开FTP进去时的默认目录'),
);
$aAbortFile = array ( 'robots.txt' );
$aErrors = array ();
$iError = count ( $aErrors );
$aSuc = array ();
foreach ( $aFTPServers as $ftp ) {
$conn = ftp_connect( $ftp [0]);
if ( empty ( $conn )){
$iError = $iError + 1;
array_push ( $aErrors , $iError . "、服务器 $ftp 无法连接" );
continue ;
}
$login = ftp_login( $conn , $ftp [1], $ftp [2]);
if ( empty ( $login )){
$iError = $iError + 1;
array_push ( $aErrors , $iError . "、服务器 $ftp[0] 无法登录" );
continue ;
}
$ftp_root = '' ;
if (! empty ( $ftp [3])) $ftp_root = ftp_chdir( $conn , $ftp [3]);
$ftp_root = ftp_pwd( $conn );
if ( substr ( $ftp_root , -1) == '/' ) $ftp_root = substr ( $ftp_root , 0, -1);
foreach ( $aFiles as $k => $v ){
$s = basename ( $v );
if (in_array( $s , $aAbortFile )) {
$iError = $iError + 1;
array_push ( $aErrors , $iError . "、文件 $v 不允许同步" );
continue ;
}
if (! file_exists ( '.' . $v )) {
$iError = $iError + 1;
array_push ( $aErrors , $iError . "、文件 $v 不存在" );
continue ;
}
$upload = ftp_put( $conn , $ftp_root . $v , '.' . $v , FTP_BINARY);
if ( empty ( $upload )){
$iError = $iError + 1;
array_push ( $aErrors , $iError . "、文件 $v 上传失败" );
continue ;
}
array_push ( $aSuc , $v );
}
}
if ( empty ( $aErrors )) {
echo '上传成功: ' . implode( '、' , $aSuc );
exit ;
}
echo implode( '<br>' , $aErrors );
exit ;
}
$cc = '\r\n' ;
echo '<script src="//cdn.bootcss.com/jquery/3.0.0/jquery.js"></script>' ;
echo <<<EOF
请输入你要同步的文件名(包括它的路径),例如:inoutcome_final.zip、/ default .php、/index.php、/inoutcome_final.sqlite等等,每行输入一个文件名,可回车输入多个<br><br>
<textarea style= "width:450px; height:85px; border:1px #000 solid;" id= "id_file" onkeyup= "this.value=this.value.replace(/ /g,'');" ></textarea><br>
<button id= "btn_submit" onclick= "return submit_sync();" >同步以上文件</button> <br><span id= "show_sync" style= "color:#f00;" ></span>
<script>
function submit_sync(){
$( "#btn_submit" ).hide();
var sFiles = $( "#id_file" ).val();
var aFiles = sFiles.split(/ $cc /);
if (aFiles.length <= 0 || aFiles[0].length <= 5) {
alert( "请手工写入要同步的文件清单" );
$( "#btn_submit" ).show( "slow" );
return false;
}
$.post( "?" , { "files" :sFiles}, function (v){
$( "#show_sync" ).text(v);
if (v.indexOf( "上传成功" ) != -1) $( "#id_file" ).val( '' );
$( "#btn_submit" ).show(5000);
})
return true;
}
</script>
EOF;
?>
|
以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。