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 相关文章推荐
2.PHP入门
Oct 09 PHP
一个用于网络的工具函数库
Oct 09 PHP
PHP+Tidy-完美的XHTML纠错+过滤
Apr 10 PHP
五个PHP程序员工具
May 26 PHP
Ajax PHP 边学边练 之三 数据库
Nov 26 PHP
getJSON跨域SyntaxError问题分析
Aug 07 PHP
PHP自带方法验证邮箱是否存在
Feb 01 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
May 29 PHP
基于Laravel 多个中间件的执行顺序详解
Oct 21 PHP
Laravel自动生成UUID,从建表到使用详解
Oct 24 PHP
PHP+MySQL实现在线测试答题实例
Jan 02 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 反向排序和随机排序代码
2010/06/30 PHP
php中hashtable实现示例分享
2014/02/13 PHP
php原生数据库分页的代码实例
2019/02/18 PHP
Javascript MD4
2006/12/20 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
jquery获取当前日期的方法
2015/01/14 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
vue监听滚动事件实现滚动监听
2017/04/11 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
Vue中通过Vue.extend动态创建实例的方法
2019/08/13 Javascript
NetworkX之Prim算法(实例讲解)
2017/12/22 Python
Django自定义用户认证示例详解
2018/03/14 Python
Python后台开发Django会话控制的实现
2019/04/15 Python
python计算无向图节点度的实例代码
2019/11/22 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
利用HTML5实现使用按钮控制背景音乐开关
2015/09/21 HTML / CSS
苹果Mac升级:MacSales.com
2017/11/20 全球购物
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
英国鲜花递送:Blossoming Gifts
2020/07/10 全球购物
施华洛世奇新加坡官网:SWAROVSKI新加坡
2020/10/06 全球购物
应届生如何写自荐信
2014/01/05 职场文书
我的动漫时代的创业计划书范文
2014/01/27 职场文书
六查六看剖析材料
2014/02/15 职场文书
士力架广告词
2014/03/20 职场文书
银行服务明星推荐材料
2014/05/29 职场文书
年会主持人开场白台词
2015/05/29 职场文书
Mysql基础知识点汇总
2021/05/26 MySQL
CSS实现单选折叠菜单功能
2021/11/01 HTML / CSS