我有一个脚本需要约5分钟才能执行和完成。一切都发生在一个PHP页面上(包括但没有AJAX或任何东西)。脚本完成后,您将通过电子邮件发送文件。
我希望前端能够简单地接受表单提交并在幕后执行操作,同时通过推送信息,如果窗口仍然打开。
因此,例如,这里将是流程:
目标是在用户等待时提供信息,但在表单提交后立即关闭窗口是完全可以接受的,并且仍然会收到电子邮件。我知道我可以通过AJAX提交表单,但是如何才能传回临时进程完成而不仅仅是成功回调?
答案 0 :(得分:1)
您必须让客户端(浏览器)定期轮询服务器以进行更新。例如,您可能会遇到以下内容:
function checkStatus() {
$.ajax( {
url: "/CheckStatus", // your AJAX handler, on the server
success: function(data) {
$('#status').text( data );
if( data != 'Email sent' )
setTimeout( checkStatus(), 100 );
}
} );
}
然后,在提交表单后,只需致电checkStatus
。
答案 1 :(得分:0)
您应该将服务器端逻辑分离为可以从命令行运行的脚本。假设您使用的是Linux,那么您将使用php exec()函数在服务器上启动后台进程,该进程使用php命令行程序运行您的脚本。
然后,您将使用浏览器代码定期轮询服务器以获取更新。