PHP编写文件多服务器同步程序


Posted in PHP onJuly 02, 2016

本文实例为大家分享了PHP文件多服务器同步工具,具体内容如下

<?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程序设计有所帮助。

PHP 相关文章推荐
在任意字符集下正常显示网页的方法二(续)
Apr 01 PHP
基于php伪静态的实现详细介绍
Apr 28 PHP
一个简洁的PHP可逆加密函数(分享)
Jun 06 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
Jun 10 PHP
Thinkphp中Create方法深入探究
Jun 16 PHP
php检测url是否存在的方法
Apr 14 PHP
PHP使用CURL模拟登录的方法
Jul 08 PHP
php无限分类使用concat如何实现
Nov 05 PHP
详解WordPress开发中wp_title()函数的用法
Jan 07 PHP
php中strtotime函数性能分析
Nov 20 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
Oct 12 PHP
php如何获取Http请求
Apr 30 PHP
php blowfish加密解密算法
Jul 02 #PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
Jul 01 #PHP
PHP处理CSV表格文件的常用操作方法总结
Jul 01 #PHP
PHP读书笔记整理_结构语句详解
Jul 01 #PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
Jul 01 #PHP
php投票系统之增加与删除投票(管理员篇)
Jul 01 #PHP
PHP读书笔记_运算符详解
Jul 01 #PHP
You might like
我的论坛源代码(三)
2006/10/09 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
php 指定范围内多个随机数代码实例
2016/07/18 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
用JavaScript隐藏控件的方法
2009/09/21 Javascript
Javascript 类、命名空间、代码组织代码
2011/07/31 Javascript
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
2011/10/16 Javascript
js给selected添加options的方法
2015/05/06 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
JS作用域链详解
2017/06/26 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
Vue SPA 初次进入加载动画实现代码
2019/11/14 Javascript
js如何验证密码强度
2020/03/18 Javascript
使用TS来编写express服务器的方法步骤
2020/10/29 Javascript
[53:52]OG vs EG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python获取本地计算机名字的方法
2015/04/29 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
Django forms组件的使用教程
2018/10/08 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
python 图像的离散傅立叶变换实例
2020/01/02 Python
基于Numba提高python运行效率过程解析
2020/03/02 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
CSS3中HSL和HSLA的简单使用示例
2015/07/14 HTML / CSS
VisionPros美国站:加拿大在线隐形眼镜和眼镜零售商
2020/02/11 全球购物
linux面试题参考答案(1)
2016/01/22 面试题
采购主管的岗位职责
2013/12/17 职场文书
个人优缺点自我评价
2014/01/27 职场文书
高中自我评价范文
2014/01/27 职场文书
党的群众路线教育实践活动宣传方案
2014/02/23 职场文书
制药工程专业职业生涯规划范文
2014/03/10 职场文书
党员活动日总结
2014/05/05 职场文书
人力资源部岗位职责
2015/02/11 职场文书
教你用Java Swing实现自助取款机系统
2021/06/11 Java/Android
Python可视化学习之seaborn调色盘
2022/02/24 Python
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技