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查询域名状态whois的类
Nov 25 PHP
真正的ZIP文件操作类(php)
Jul 21 PHP
php下保存远程图片到本地的办法
Aug 08 PHP
php中OR与|| AND与&amp;&amp;的区别总结
Oct 26 PHP
重新认识php array_merge函数
Aug 31 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
Jan 07 PHP
使用Yii2实现主从数据库设置
Nov 20 PHP
php正则提取html图片(img)src地址与任意属性的方法
Feb 08 PHP
php生成无限栏目树
Mar 16 PHP
PHP使用文件锁解决高并发问题示例
Mar 29 PHP
PHP implode()函数用法讲解
Mar 08 PHP
Laravel实现ORM带条件搜索分页
Oct 24 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
解决FastCGI 进程超过了配置的活动超时时限的问题
2013/07/03 PHP
php生成N个不重复的随机数实例
2013/11/12 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
javascript[js]获取url参数的代码
2007/10/17 Javascript
学习ExtJS border布局
2009/10/08 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
2016/02/19 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
BootStrap Table 后台数据绑定、特殊列处理、排序功能
2017/05/27 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
利用React Router4实现的服务端直出渲染(SSR)
2019/01/07 Javascript
javascript随机变色实例代码
2019/10/15 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
[01:05:56]Liquid vs VP Supermajor决赛 BO 第二场 6.10
2018/07/04 DOTA
Python多线程经典问题之乘客做公交车算法实例
2017/03/22 Python
基于树莓派的语音对话机器人
2019/06/17 Python
Django获取应用下的所有models的例子
2019/08/30 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
Python 中判断列表是否为空的方法
2019/11/24 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
python实现每天自动签到领积分的示例代码
2020/08/18 Python
如何用python 操作zookeeper
2020/12/28 Python
用canvas显示验证码的实现
2020/04/10 HTML / CSS
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
台湾旅游网站:灿星旅游
2018/10/11 全球购物
德国50岁以上交友网站:Lebensfreunde
2020/03/18 全球购物
美国床垫连锁店:Mattress Firm
2021/02/13 全球购物
解除财产保全担保书
2014/05/20 职场文书
婚宴主持词
2015/06/30 职场文书
庆祝教师节主持词
2015/07/06 职场文书
Nginx配置使用详解
2022/07/07 Servers