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自动跳转中英文页面
Jul 29 PHP
JS 网站性能优化笔记
May 24 PHP
调试一段PHP程序时遇到的三个问题
Jan 17 PHP
Linux下php5.4启动脚本
Aug 03 PHP
ThinkPHP 表单自动验证运用示例
Oct 13 PHP
ThinkPHP自动完成中使用函数与回调方法实例
Nov 29 PHP
推荐10个提供免费PHP脚本下载的网站
Dec 31 PHP
php从完整文件路径中分离文件目录和文件名的方法
Mar 13 PHP
PHP SPL标准库之SplFixedArray使用实例
May 12 PHP
php compact 通过变量创建数组
Nov 15 PHP
php 三元运算符实例详细介绍
Dec 15 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
Apr 19 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
2019年中国咖啡业现状与发展趋势
2021/03/04 咖啡文化
PHP新手上路(九)
2006/10/09 PHP
php smarty 二级分类代码和模版循环例子
2011/06/01 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
键盘控制事件应用教程大全
2006/11/24 Javascript
javascript 打印内容方法小结
2009/11/04 Javascript
web前端开发也需要日志
2010/12/09 Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
2012/05/23 Javascript
jquery 层次选择器siblings与nextAll的区别介绍
2013/08/02 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
js实现目录定位正文示例
2013/11/14 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
2016/05/23 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
2016/12/14 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
[04:51]TI10典藏宝瓶Ⅱ外观视频展示
2020/08/15 DOTA
Python数据类型详解(一)字符串
2016/05/08 Python
python实现Adapter模式实例代码
2018/02/09 Python
python 矩阵增加一行或一列的实例
2018/04/04 Python
浅谈tensorflow之内存暴涨问题
2020/02/05 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
电气专业推荐信范文
2013/11/18 职场文书
房地产项目建议书
2014/03/12 职场文书
先进事迹报告会主持词
2014/04/02 职场文书
奥巴马英文演讲稿
2014/05/15 职场文书
商铺门前三包责任书
2014/07/25 职场文书
放飞理想主题班会
2015/08/14 职场文书
七年级作文之英语老师
2019/10/28 职场文书
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL