比如 aria2 下载工具的 web 界面
前端设定参数后 怎么启动 aria2 呢? web 后台程序代码开一个 aria2 线程?还是怎么做?
1
InternetExplorer 2021-02-21 09:29:18 +08:00 via iPhone
aria2 可以作为服务器端提供接口,看看已经有的几个 webui 怎么做的就知道了
|
2
azev OP @InternetExplorer 多谢 如果是更通用些呢 比如运行下 ffmpeg
|
3
azev OP @InternetExplorer 或者是 youtube-dl 之类
|
4
jarnanchen 2021-02-21 10:24:20 +08:00
web 后台调用这些服务就好了
比如 https://www.npmjs.com/package/youtube-dl |
5
cpstar 2021-02-21 10:26:09 +08:00
aria 的 webui 是不能启动 aria 本体的,webui 通过 aria 本体提供的 api 接口与 aria 本体进行数据交互。
这种 webui 普遍不需要服务器端的运行环境( php 、java 、python 、nodejs 等),只需要一个简单的 http 容器即可。 但是,如果需要实现启动 aria 本体或者运行 ffmpeg 等其他服务器端的本地程序,那么就需要服务器端不仅是提供 http 容器,还要提供一些运行环境,同时开权限调方法,比如 php 的 exec system 之类的,java 的 Runtime.exec 等。然后浏览器触发写有相应过程的页面,页面同步或者异步方式进行系统调用以启动相应本地程序。 |
6
systemcall 2021-02-21 16:40:24 +08:00 via Android
aria2 这种软件一般是 json rpc 吧,如果配置文件或者命令行有加相应的参数,程序启动后就会打开对应的端口,处理这些请求。把 aria2 这类加到开机启动就可以了,反正启动也要一段时间
启动别的程序可以写 cgi 或者 PHP 之类的,这个需要 Web 服务器支持,配置正确的话没什么问题 不清楚你的原始需求。如果是想要下载完成后转码之类的话,我记得这些软件是有下载完成的操作的,可以定义一个命令,有一些变量可以调用,来获取一些信息(文件名这类),具体的需要看对应下载软件的文档 |
7
ch2 2021-02-22 01:57:22 +08:00 via iPhone
核心思想是把耗时任务抽象出 task 元数据缓存起来,在任务执行的过程中通过任务自带的 callback 或者使用一些系统提供的观察方法更新 task 的状态与进度,web 后台定期查询缓存,并把信息更新到 UI 上,这是耗时任务的通解
|