我现在有一个后端服务,该服务会在服务器上运行一个脚本来做一些运算,运算结果保存在文件内,文件名形如 result_12345,并且通过 url/results/12345 在 web 上显示出来
这个运算可能会耗时很久,所以当运算在进行中时,我设定一个间隔让前端自动刷新
我希望,只有当运算结束时,url/results/12345 才显示数据,否则,就什么也不显示(而不是在运算进行到一半时,就显示出一部分运算结果)
我现在能想到的方案:
- 修改脚本,将运算结果先保存在一个 temp 文件内,当运行完毕时,再重命名为 result_12345
- 修改脚本,将 result_12345 加锁,使得当运算在进行中时,服务器代码无法访问该文件
- 修改后端代码,当后端 call 这个脚本时,设定 result[12345]['finished'] = false,并且启动一个子进程去运行脚本;当脚本运行完毕时再设定 result[12345]['finished'] = true
因为不是严肃用途,所以不需要考虑太多的边缘情况
有没有比较好的实现方法?谢谢

