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调用mysql存储过程
Feb 14 PHP
MayFish PHP的MVC架构的开发框架
Aug 13 PHP
PHP sprintf() 函数的应用(定义和用法)
Jun 29 PHP
关于svn冲突的解决方法
Jun 21 PHP
PHP常用工具类大全附全部代码下载
Dec 07 PHP
php实现图片上传并利用ImageMagick生成缩略图
Mar 14 PHP
程序员的表白神器“520”大声喊出来
May 20 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
Jul 06 PHP
php中实现字符串翻转的方法
Feb 22 PHP
Yii2中添加全局函数的方法分析
May 04 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
详解Yaf框架PHPUnit集成测试方法
Dec 27 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 随机排序广告的实现代码
2011/05/09 PHP
PHP 类相关函数的使用详解
2013/05/10 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
2014/10/21 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
jQuery中用dom操作替代正则表达式
2014/12/29 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
2015/07/18 Javascript
判断是否存在子节点的实现代码
2016/05/18 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
2016/06/21 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
2017/01/11 Javascript
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
mongoose中利用populate处理嵌套的方法
2017/05/26 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
详解关于Vue2.0路由开启keep-alive时需要注意的地方
2018/09/18 Javascript
layui表格设计以及数据初始化详解
2019/10/26 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
JavaScript运行机制实例分析
2020/04/11 Javascript
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
2020/12/19 Vue.js
python optparse模块使用实例
2015/04/09 Python
pygame学习笔记(3):运动速率、时间、事件、文字
2015/04/15 Python
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
tf.concat中axis的含义与使用详解
2020/02/07 Python
Python序列化pickle模块使用详解
2020/03/05 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
如何基于python把文字图片写入word文档
2020/07/31 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
HelloFresh澳大利亚:订购你的美味食品盒、健康餐食
2018/03/28 全球购物
深圳-东方伟业笔试部分
2015/02/11 面试题
幼儿园义卖活动方案
2014/01/17 职场文书
售后服务承诺书模板
2014/05/21 职场文书
我们的节日元宵活动方案
2014/08/23 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书
新婚姻法离婚协议书范文
2014/11/30 职场文书
2016年6.5世界环境日宣传活动总结
2016/04/01 职场文书
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
2021/07/07 Servers