繁体   English   中英

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

[英]How to notify the front-end of a website of the status of a back-end processing job?

我目前面临以下问题:

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

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

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

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

任何帮助表示赞赏,谢谢。

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

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

你最好先阅读它的完成原理,例如: 进度条AJAX和PHP

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

在前端,您可以使用ajax脚本来读取PHP脚本的输出。 这反过来可以用某种百分比消息更新进度条或div - 来自PHP脚本的值。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM