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 相关文章推荐
WindowsXP中快速配置Apache+PHP5+Mysql
Jun 05 PHP
php采集时被封ip的解决方法
Aug 29 PHP
PHP通过session id 实现session共享和登录验证的代码
Jun 03 PHP
php树型类实例
Dec 05 PHP
php动态绑定变量的用法
Jun 16 PHP
深入理解PHP之OpCode原理详解
Jun 01 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
PHP+redis实现的购物车单例类示例
Feb 02 PHP
PHP中的self关键字详解
Jun 23 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
Oct 08 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
Feb 22 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
PHP编程中八种常见的文件操作方式
2006/11/19 PHP
php封装的mysqli类完整实例
2016/10/18 PHP
PDO的安全处理与事物处理方法
2016/10/31 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
jquery增加和删除元素的方法
2015/01/14 Javascript
jQuery的remove()方法使用详解
2015/08/11 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
jQuery EasyUI Layout实现tabs标签的实例
2017/09/26 jQuery
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
js的对象与函数详解
2019/01/21 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
Python urlopen()和urlretrieve()用法解析
2020/01/07 Python
Python学习之os模块及用法
2020/06/03 Python
五分钟带你搞懂python 迭代器与生成器
2020/08/30 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
新西兰优惠网站:Treat Me
2019/07/04 全球购物
aden + anais英国官网:美国婴儿贴身用品品牌
2019/09/08 全球购物
马来西亚排名第一的宠物用品店:Pets Wonderland
2020/04/16 全球购物
给老婆的婚前保证书
2014/02/01 职场文书
销售团队激励口号
2014/06/06 职场文书
反四风个人对照检查材料思想汇报
2014/09/25 职场文书
绵山导游词
2015/02/05 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
2015年房地产销售工作总结
2015/04/20 职场文书
阿凡达观后感
2015/06/10 职场文书
2015年教师节感言
2015/08/03 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
《中国机长》观后感:敬畏生命,敬畏职责
2019/11/12 职场文书
Matlab如何实现矩阵复制扩充
2021/06/02 Python