登录

php长时间的服务的设计与和前端的交互

要想做一个在线文档预览的功能,查到的方案是先转换成pdf,再使用pdfviewer来预览。

文档转换一般需要很长时间,而且需要大量的cpu。考虑并发性是否需要搞一个队列来处理文档转换?

另外,如何和前端交互呢?直接ajax等待返回得到pdf的地址,这样ok吗?

# PHP
天蓬老师天蓬老师2206 天前455 次浏览

全部回复(2) 我要回复

  • PHP中文网

    PHP中文网2017-04-11 10:36:28

    这个问题我也研究了一段时间,自己的项目正在做,我说几种办法。
    1.使用google在线文档预览功能
    google是有一套在线文档编辑程序的,实际上是可以直接调用谷歌的接口来预览在线文档的,但是有个关键问题,国内有墙,所以这个方案不是很好。
    2.使用第三方api
    可以使用百度文库的第三方云服务
    https://cloud.baidu.com/produ...
    或者I DOC V 提供的在线预览按钮。
    https://www.idocv.com/
    3.php的库自己解析调用
    正如你说你想转换成pdf然后pdfviewer但是这种需要有个列队来定时处理文档。我的想法是只允许用户上传docx或者pptx这种支持xml格式的文档,主要是为了保证兼容性。php有phpword phpexcel等等相关的库,具体可以去composer的列表搜索下,这些库可以把文档内容直接输出成html,我让用户直接预览html就好了。这样也避免了文档被用户随意下载,虽然html也可以复制粘贴~~~暂时我的项目就想使用这种方案。
    4.使用js让客户端去解析
    我的想法还是给客户端传递数据,然后通过js来解析office文档实现预览,在npm的列表当中搜过一些库,但是还没研究,如果实在都不行可能会自己想办法写一个。这种文档解析压力转到客户端是比较好的,毕竟office文档内容实际情况会更复杂一些,以上的3种情况表现力都十分有限,从百度文库的表现你就看出来了。

    总结
    在线预览这种事情对在线教育行业我觉得是挺有用的一个需求,但是实际上wps和msoffice中间还有很多兼容性问题,以及msoffice之前的2003 2007还有好多学校在用,还在教学生如何用,所以这又是很麻烦的一件事情。楼主要是有更好的方案希望能共同交流学习。

    回复
    0
  • 迷茫

    迷茫2017-04-11 10:36:28

    试一下,体验可以就行呗。

    回复
    0
  • 取消回复发送