远程离线下载(PHP 中文演示) v1.0

0 0 1318 2026-06-10
PHP SQLite Simplified Chinese (3/5)
Author:PHPDisk Team

Overview

本示例演示如何在网页中维护远程连接地址簿、创建HTTP(S)下载任务,服务端使用cURL将文件保存到本地存储,SQLite记录进度、速度与状态,前端定时轮询刷新。适用于内网或边缘节点从公网拉取大文件,通过Web界面管理下载源与任务队列,解决浏览器直接下载大文件易中断、难以统一限速与进度展示的问题。

Source details

远程离线下载(PHP 中文演示)

本示例演示:用户在网页维护「远程连接」地址簿、创建 HTTP(S) 下载任务;服务端以 cURL 将文件保存到 storage/downloads/;SQLite 记录进度、速度与状态;前端定时轮询刷新。程序版本常量名为 ROD_APP_VERSION,默认在 inc/rod_version.php,可在 config.phpdefine 覆盖。

应用场景

  • 内网或边缘节点需要从公网 HTTP(S) 拉取大文件 到本地存储,再供内部分发或归档。
  • 运维/运营人员希望通过 Web 界面 管理下载源与任务队列,而不仅是命令行脚本。

用户痛点

  • 浏览器直接下载大文件易中断,且难以做统一限速、重试与进度展示。
  • 自建下载服务若缺少任务表与 Worker 分离,易出现阻塞请求、重复下载或状态不一致。
  • 允许任意 URL 时存在 SSRF 等安全风险,需要明确提示与上线前加固思路。

本项目解决的问题

  • SQLite + 队列式 Worker(Web 触发或 CLI/定时请求)演示「创建任务 → 执行下载 → 完成后提供下载链接」的完整闭环。
  • 前端轮询展示进度、速度、状态,便于理解如何产品化「离线下载中心」。

项目价值说明

  • 可作为文件中转、镜像同步、资源预拉取等场景的 架构参考,再叠加鉴权与 URL 白名单即可向生产演进。

运行要求

  • PHP 5.6+(推荐 8.x),启用 pdo_sqlitecurl
  • Web 服务器对 storage/data/storage/downloads/ 具备写权限。

快速开始

  1. config.example.php 复制为 config.php(已附带一份默认可直接改)。
  2. 将站点根目录指向 remote-offline-download-php-cn-sample/,浏览器打开 index.php
  3. 默认开启 ROD_ALLOW_WEB_WORKER:页面会周期性 POST api/worker_once.php 驱动队列(仅适合本机演示)。生产环境请改为 false,并使用:
    • `php cli/worker

Archive contents

Loading file tree…
No files to display in this archive.
    Too many files to show. Displaying a partial listing.

    Comments

    No comments yet—be the first!