PHP遍历文件并同步上传到服务器

简介: 在进行网站迁移时,由于原网站的图片文件过多,采用打包下载再上传的方式耗时过长,且尝试使用FTP工具从旧服务器传输至新服务器时失败。为解决此问题,特使用PHP编写了一款工具,该工具能扫描指定目录下的所有`.webp`图像文件,并将其上传至新的服务器,极大地提高了迁移效率。

场景

站点迁移时原站点的图片文件太多,通过打包下载再上传到新服务器速度太慢,通过 FTP 工具直接从老服务器上传到新服务器失败。因此使用 PHP 写了一个工具直接通过工具实现上传。

实现

<?php
function traverse($dir) {
    $files = scandir($dir);    
    $destinationDirectory = str_replace("/原网站路径/", '/新网站路径/',$dir.'/');
    //输出目标路径,方便排错
    echo "$destinationDirectory\n";
    foreach ($files as $file) {
        if ($file == '.' || $file == '..') {
            continue;
        }
        $path = $dir . '/' . $file;
        if (is_dir($path)) {
            traverse($path);
        } else {
          if (strpos($file, ".webp")) {
            echo "$path\n";//原文件路径
            echo "$destinationDirectory"."$file \n";//新文件路径
            echo "\n";
            fileUpload($path,$destinationDirectory.$file);
          }
        }
    }
}
/**
*@$local_file 本地文件路径
*@$remote_file 远程文件路径
*/
function fileUpload($local_file,$remote_file){
  
  $ftp_server = "example.com"; // FTP服务器地址
  $ftp_username = "username"; // FTP登录用户名
  $ftp_password = "password"; // FTP登录密码
   
  // 建立基础连接
  $conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server\n");
   
  // 使用提供的用户名和密码登录
  if (@ftp_login($conn_id, $ftp_username, $ftp_password)) {
      ftp_pasv($conn_id, true);//如果不加此句,会导致ftp_put出现错误
      // 上传文件
      if (ftp_put($conn_id, $remote_file, $local_file, FTP_ASCII)) {
          echo "Successfully uploaded $local_file to $remote_file\n";
      } else {
          echo "There was a problem while uploading $local_file\n";
      }
  } else {
      echo "Couldn't connect as $ftp_username\n";
  }
   
  // 关闭连接
  ftp_close($conn_id);

}

$dir = "/www/mysite/images";//在traverse方法中的路径替换可以将 /www/mysite/ 替换为目标路径,比如替换为:/www/newsite/
traverse($dir);
相关文章
|
4月前
|
缓存 监控 网络安全
因服务器时间不同步引起的异常
因服务器时间不同步引起的异常
251 1
|
4月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
120 9
|
19天前
|
应用服务中间件 PHP nginx
当你的nginx服务器和php服务器不在一起的时候,这个nginx 的root目录问题
两个服务器的网站代码目录需要对齐,docker容器里面也是一样
|
2月前
|
存储 安全 网络安全
服务器感染了.baxia勒索病毒,如何确保数据文件完整恢复?
近年来,勒索病毒如.baxia不断演变,利用漏洞、社交工程等手段加密文件,威胁范围扩大。加密货币的兴起使其支付方式更匿名,追踪困难。技术支持尤为重要,添加技术服务号(shuju315),专业团队提供数据恢复方案。面对复杂解密要求,包括赎金支付、个人信息提供和执行特定操作,需保持冷静并寻求帮助。防御措施包括加强安全意识、定期备份数据、安装杀毒软件、避免未知文件、更新系统及制定应急响应计划。
87 11
|
4月前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
98 3
|
4月前
|
自然语言处理 编译器 应用服务中间件
PHP在服务器上的运行过程
PHP在服务器上的运行过程
94 7
|
4月前
|
监控 PHP Apache
优化 PHP-FPM 参数配置:实现服务器性能提升
优化PHP-FPM的参数配置可以显著提高服务器的性能和稳定性。通过合理设置 `pm.max_children`、`pm.start_servers`、`pm.min_spare_servers`、`pm.max_spare_servers`和 `pm.max_requests`等参数,并结合监控和调优措施,可以有效应对高并发和负载波动,确保Web应用程序的高效运行。希望本文提供的优化建议和配置示例能够帮助您实现服务器性能的提升。
167 3
|
4月前
|
PHP 开发者
PHP作为一门流行的服务器端脚本语言,深入理解PHP的命名空间
【10月更文挑战第22天】PHP作为一门流行的服务器端脚本语言,自1995年诞生以来,已经发展了二十多年。在这二十多年的时间里,PHP经历了多次重大版本的更新,不断增加新特性和改进。其中,命名空间(Namespace)是PHP 5.3.0引入的一个重要特性,它为PHP的代码组织和重用提供了一种新的方式。本文将从三个部分深入理解PHP的命名空间:一是命名空间的基本概念和作用;二是PHP命名空间的使用方法;三是通过实例讲解命名空间的应用。
44 4
|
5月前
|
Python
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
这篇博客文章是关于如何使用Flask框架上传特征值数据到服务器端,并将其保存为txt文件的教程。
61 0
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
|
5月前
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
72 3

热门文章

最新文章