本文实例为大家分享了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程序设计有所帮助。