0

0

php调用听书插件如何实现断点续播_php听书插件断点续播实现法【续播】

星夢妙者

星夢妙者

发布时间:2026-01-16 20:28:02

|

641人浏览过

|

来源于php中文网

原创

php无法直接实现断点续播,需前后端协同:前端javascript监听播放状态并上报进度,php接口负责存取user_id、book_id和current_time至redis或mysql。

php调用听书插件如何实现断点续播_php听书插件断点续播实现法【续播】

PHP 本身不直接控制音频播放,断点续播需前后端协同

PHP 是服务端语言,无法直接读取浏览器<audio></audio> 的当前播放时间或监听暂停/中断事件。所谓“PHP 调用听书插件实现断点续播”,本质是 PHP 提供接口存取播放进度,由前端 JavaScript 主动上报和恢复。如果跳过前端、只写 PHP 逻辑,断点续播一定失败。

关键数据存储:用 PHP 接口保存和读取用户播放位置

用户每次暂停或离开页面前,前端应通过 AJAX 向 PHP 接口提交当前 currentTime(单位:秒),PHP 将其与 user_idbook_id 一起存入数据库(如 MySQL)或缓存(如 Redis)。下次加载同一本书时,前端再调用 PHP 接口拉取该记录。

  • 推荐使用 Redis 存储,键名建议为 play_progress:{user_id}:{book_id},过期时间设为 7 天
  • MySQL 表结构至少包含:user_id(INT)、book_id(INT)、current_time(FLOAT)、updated_at(DATETIME)
  • PHP 接口示例(接收 POST):
    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['book_id'], $_POST['time'])) {
        $book_id = (int)$_POST['book_id'];
        $time = (float)$_POST['time'];
        $user_id = get_current_user_id(); // 你自己的登录态识别逻辑
        // 写入 Redis 或 DB
        $redis->setex("play_progress:{$user_id}:{$book_id}", 60 * 60 * 24 * 7, $time);
        echo json_encode(['ok' => true]);
    }

前端 JS 必须主动管理播放状态与时间同步

仅靠 PHP 存数据远远不够。前端要处理:beforeunload 捕获页面关闭、visibilitychange 监听标签页切换、pause/ended 事件触发保存,并在 loadedmetadata 后设置 currentTime

Qwen
Qwen

阿里巴巴推出的一系列AI大语言模型和多模态模型

下载
  • 不要依赖 timeupdate 频繁上报——太耗资源,应在暂停/切页/播放结束时才调用保存接口
  • 恢复播放前务必检查音频是否已加载元数据(audio.readyState >= 1),否则设置 currentTime 会无效
  • 若音频是流式(如 HLS),currentTime 可能不精确,需配合服务端做分段对齐(如按章节/时间戳锚点)

常见失效原因:跨设备、无登录态、缓存未清理

很多“续播失效”问题其实和 PHP 逻辑无关,而是业务链路断了:

立即学习PHP免费学习笔记(深入)”;

  • 用户未登录,user_id 为空或用 session_id 临时标识 → 换浏览器即丢失进度
  • 前端请求 PHP 接口时没带 cookie 或 token,导致服务端无法识别用户
  • CDN 或代理缓存了 PHP 返回的进度接口响应(尤其是 GET 请求),造成旧时间被反复返回
  • 音频文件 URL 带有动态参数(如签名、时间戳),导致两次加载的 <audio src="..."></audio> 实际不是同一个资源,浏览器无法复用已缓冲数据

断点续播真正难的不是存时间,而是确保「谁、在哪个设备、播哪本书、播到哪一秒」这四个维度始终可追溯且一致。PHP 只管稳稳接住和吐出那个数字,别让它跑偏就行。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

682

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

452

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

286

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

519

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

265

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

392

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

541

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

665

2023.08.14

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

0

2026.03.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 2.4万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 842人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号