我想做的是使用 ffmpeg 转换视频,通过向服务器发送 ajax 请求需要很长时间才能完成,但不会让用户等到视频转换完成。
如果用户在发送请求后刷新页面,会停止函数表单的完成吗? 这是一个好方法还是我应该为视频转换建立一个队列?
最佳答案
您可以使用以下结构;
- 当用户开始视频转换时,通过ajax向后端发送请求进行转换
- 发送请求时,您可以在服务器端设置 Cookie(也可以在浏览器上读取)。
- 发送请求后,您可以显示处理栏。
- 当用户刷新页面时,您将检查 Cookie 值是否启动了任何视频转换。如果存在,则可以继续再次显示进度条。
- 当转换完成后,您可以将cookie值设置为done,并通过ajax检查调用将转换状态告知用户。
我假设您在特定时间间隔内进行 ajax 调用来获取转换状态。如果不使用ajax poll ,您可以使用websockets将结果发送回浏览器客户端。 Cookie值是可以被客户端修改的,所以最好对Cookie值进行加密,或者将视频转换页面转换为限制页面。如果视频转换页面仅限注册用户,您可以在 db 中设置转换状态而不是 cookie。
关于javascript - 中断ajax函数会阻止它完成吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22892929/