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 生成的XML以FLASH获取为乱码终极解决
Aug 07 PHP
php面向对象全攻略 (十五) 多态的应用
Sep 30 PHP
PHP数组实例总结与说明
Aug 23 PHP
php中实现简单的ACL 完结篇
Sep 07 PHP
PHP连接Access数据库的方法小结
Jun 20 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
Jun 26 PHP
php实现对两个数组进行减法操作的方法
Apr 17 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
Oct 14 PHP
PHP实现的简单排列组合算法应用示例
Jun 20 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
php中的钩子理解及应用实例分析
Aug 30 PHP
解决laravel5.4下的group by报错的问题
Oct 16 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
xajax写的留言本
2006/11/25 PHP
php switch语句多个值匹配同一代码块的实现
2014/03/03 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
使用js获取图片原始尺寸
2014/12/03 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
jquery中关于bind()方法的使用技巧分享
2017/03/30 jQuery
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
vue单页缓存方案分析及实现
2018/09/25 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
2019/05/12 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
2019/05/13 Javascript
微信小程序如何利用getCurrentPages进行页面传值
2019/07/01 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
用Python生成器实现微线程编程的教程
2015/04/13 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
2019/07/04 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
Python 将json序列化后的字符串转换成字典(推荐)
2020/01/06 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
2020/01/08 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
2020/02/11 Python
多个python文件调用logging模块报错误
2020/02/12 Python
python如何爬取网页中的文字
2020/07/28 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
雷蛇美国官网:Razer
2020/04/03 全球购物
《九寨沟》教学反思
2014/04/08 职场文书
环保倡议书
2014/04/14 职场文书
文明生主要事迹
2014/05/25 职场文书
欢迎新生标语
2014/10/06 职场文书
2014年管理人员工作总结
2014/12/01 职场文书
期末个人总结范文
2015/02/13 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
小学生暑假安全保证书
2015/07/13 职场文书
2015中学学校工作总结
2015/07/20 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书