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 相关文章推荐
php之对抗Web扫描器的脚本技巧
Oct 01 PHP
PHP在字符串中查找指定字符串并删除的代码
Oct 02 PHP
基于php-fpm 参数的深入理解
Jun 03 PHP
利用php递归实现无限分类 格式化数组的详解
Jun 08 PHP
获取URL文件名后缀
Oct 24 PHP
php发送post请求函数分享
Mar 06 PHP
PHP高级编程实例:编写守护进程
Sep 02 PHP
微信公众平台开发实现2048游戏的方法
Apr 15 PHP
PHP闭包函数详解
Feb 13 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
May 11 PHP
PHP中的函数声明与使用详解
May 27 PHP
PHP判断json格式是否正确的实现代码
Sep 20 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
星际原理概述
2020/03/04 星际争霸
PHP4实际应用经验篇(1)
2006/10/09 PHP
Mootools 1.2教程 函数
2009/09/15 Javascript
javascript 用记忆函数快速计算递归函数
2010/03/15 Javascript
JavaScript排序算法之希尔排序的2个实例
2014/04/04 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
javascript实现动态改变层大小的方法
2015/05/14 Javascript
详解JavaScript正则表达式中的global属性的使用
2015/06/16 Javascript
JavaScript Math.round() 方法
2015/12/18 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
Angular2利用组件与指令实现图片轮播组件
2017/03/27 Javascript
vue-cli单页应用改成多页应用配置详解
2017/07/14 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
Layui数据表格之单元格编辑方式
2019/10/26 Javascript
Python 关于反射和类的特殊成员方法
2017/09/14 Python
python框架中flask知识点总结
2018/08/17 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
Django ORM多对多查询方法(自定义第三张表&amp;ManyToManyField)
2019/08/09 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
Prometheus开发中间件Exporter过程详解
2020/11/30 Python
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
法国二手MacBook销售网站:Okamac
2019/03/18 全球购物
雷朋巴西官方商店:Ray-Ban Brasil
2020/07/21 全球购物
创伤外科专业推荐信范文
2013/11/19 职场文书
国际贸易专业个人求职信格式
2014/02/02 职场文书
汽车销售员如何做职业生涯规划
2014/02/16 职场文书
教堂婚礼主持词
2014/03/14 职场文书
安全协议书范本
2014/04/21 职场文书
租赁协议书范本
2014/04/22 职场文书
幼儿教师师德师风演讲稿
2014/08/22 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
学生检讨书怎么写
2014/10/09 职场文书
租赁协议书
2015/01/27 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL