You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批量产品同步场景下快速校验远程图片文件是否存在的实现方案

优化方案

1. 替换HTTP校验逻辑降低单次请求开销

你当前使用get_headers()的校验方式默认发起GET请求,每次校验都要完成完整的HTTP握手、响应传输流程,3500次独立请求叠加后耗时极高。可调整为发起HEAD请求校验:

// 全局设置HTTP请求方法为HEAD
stream_context_set_default(['http' => ['method' => 'HEAD']]);
// 再执行校验逻辑
if (stripos(get_headers(DESTINATION_URL . "{$path}/{$file}")[0], '200 OK') === false) {
    // 上传逻辑
}

调整后单次请求的响应体积大幅缩小,整体耗时可降低30%以上。

2. 优化FTP全量列表拉取逻辑

递归调用ftp_mlsd()的耗时核心来自上千次FTP命令往返开销,可改用一次性拉取递归目录列表的方式:

  • 调用ftp_raw()执行LIST -R命令,直接获取所有目录和文件的递归列表,自行解析返回内容即可得到全量远程文件路径,千级目录场景下列全表耗时可控制在2分钟以内
  • 本地提前生成所有待同步文件的路径数组,用array_diff()直接计算本地与远程路径的差集,即可得到所有缺失待上传的文件,数组比对耗时仅为毫秒级

3. 新增增量同步机制降低全量校验频率

  • 本地维护已同步文件的记录(可存修改时间、MD5哈希值),每次同步前仅校验有变更的本地文件对应的远程资源,正常补传场景无需每次全量校验所有3500张图片
  • 若你持有远程服务器的SSH权限,直接使用rsync工具同步是最优解,工具会自动对比本地与远程文件的大小、修改时间,仅传输差异内容,几千个文件的同步耗时通常不超过10秒

内容的提问来源于stack exchange,提问作者Faye D.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:06:03