繁体   English   中英

我如何衡量ajax调用的进度? 在带有jQuery / ajax的PHP中

[英]How do I measure the progress of an ajax call? In Php with jquery/ajax

我有一个AJAX调用,它正在运行一个较长的PHP脚本,其中有20个不同的结果,我想显示脚本中的每个步骤何时完成。 像这样1/20完成,2/20完成,3/20完成。

最新的29-12-2015 03:17。

我试图通过PHP这样创建JSON文件( jsonFileName_uniqueTimeStampHere.json ),但是用PHP创建文件所花费的时间导致未找到404文件错误!

因为当AJAX调用运行时,它是在创建文件之前进行的进度调用,所以我知道我无法使用JavaScript创建文件,但是仍然可以创建该文件。

从jQuery AJAX成功回调之前的文件?

在AJAX调用运行时显示进度信息的最佳方法是什么。

现在的方式是,我在服务器上保存了一个JSON文件,该文件已更新为已完成的最新状态,但是如果多个用户正在运行同一脚本,则该状态的JSON文件将被覆盖。

  1. 我应该将每个进度的状态保存在数据库中,然后通过多次调用获得状态已完成的PHP方法来接收它吗?
  2. 是否应该继续使用当前使用的方法,并向JSON文件添加一个userID,以便在每次调用该文件时该ID都是唯一的?
  3. 我应该如何与Seositecheckup一样进行操作?

使用AJAX和PHP取得进展的最佳方法是什么?

如果您需要更多信息,请告诉我。

我四处张望,感觉不到信息或信息的一半,可以找到在线足以完成此任务。

我想使用jQuery AJAX而不是XMLHttpRequest,我在寻找类似于seositecheckup.com的东西,当您扫描页面时,您可以在控制台中看到每个已完成函数的状态更新,并通过不同的AJAX调用来完成。 那怎么可能?

我应该忘记使用jQuery,而是专注于纯JavaScript吗?

现在我有一个使用jQuery的安装程序,可以解决的问题是,我使用JSON文件从中获取结果,并且当多个用户请求同一脚本时它会被覆盖,是否可以将状态存储在db中并接收它从那里有一些唯一的标识符?

将来,我希望将脚本放入可以运行的队列中,并且在脚本结束时应向用户发送电子邮件。

HTTP处理可能花费很长时间的请求的方式是请求返回202 ,响应的正文应包含用户可以在其中查询结果的URL。

#Request
POST /some/entitities
...

#Response
HTTP/1.0 202 Accepted

/jobs/{jobId}

然后,用户可以轮询/jobs/{jobId} ,后者可以返回代表进度的数字。 你必须用这个吗? 不,但是如果您这样做,其他开发人员可以立即识别出发生了什么。

即使您不使用我推荐的方法,也将必须跟踪数据库中的作业进度,并需要单独的AJAX调用来查找当前进度。

暂无
暂无

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

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