如何通知网站前端后端处理工作的状态?

时间:2017-07-26 14:31:21

标签: javascript php laravel

我目前面临以下问题:

用户上传图像后,所有图像都通过优化每张图像的脚本进行处理(压缩并删除EXIF数据)。

我把一切都搞定了,唯一的问题是这个过程需要相当长的时间。我想通知用户工作状态,例如已处理图像的百分比。

目前,用户必须在不知道后端的内容的情况下等待。完成此任务的最佳方法是什么?我已经考虑过AJAX调用,但老实说我不知道​​从哪里开始实现这个,也因为看起来我需要多次调用(有点像处理工作的心跳调用)。

我正在开发的应用程序是一个Laravel应用程序,我已经创建了一个API控制器,它通过AJAX调用来处理传入的文件。

感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:2)

Laravel为此Broadcasting。它使用websockets,redis或pusher将事件发送到客户端。

这样,您可以在处理完成后向客户端发送消息,而无需他们随时刷新网页。

答案 1 :(得分:1)

你最好先阅读有关如何完成的原则,例如:Progress bar AJAX and PHP

基本上,它的工作方式是通过PHP在服务器上完成作业(处理图像)。您的脚本需要生成某种输出以显示它的通行距离,例如: echo进度百分比的某些值。 PHP脚本本身负责产生这个输出,所以你必须弄清楚如何计算它然后编入代码。可能需要考虑处理图像的数量,并且当每个图像成功处理时,它为计数器增加了1。当计数器等于图像数量时,100%完成,或者如果出现问题可能会出现一些错误消息。

在前端,你可以有一个ajax脚本,它从PHP脚本中读取输出。这反过来可以更新进度条,或div以及某种百分比消息 - 来自PHP脚本的值。

Laravel - 和其他框架 - 有内置的方法来帮助。但是你要更好地理解它的工作原理,比如我发布的链接。