这两天我一直在谷歌搜索,找不到我想要的。
我有使用 PHP 开发的 SMSmobile 工具,它允许客户端发送批量 SMS,当我的客户按下Send
按钮时,浏览器将继续加载,直到 SMS 发送给他的所有联系人(可能是 100000 个联系人或更多),所以需要从 2-5 分钟。同时,如果客户端按下浏览器Refresh
按钮或同一页面上的任何其他按钮,它将破坏发送过程。
我需要显示一个弹出进度条,以防止用户在Sending
流程结束之前执行任何操作。
请问有什么建议吗?
这两天我一直在谷歌搜索,找不到我想要的。
我有使用 PHP 开发的 SMSmobile 工具,它允许客户端发送批量 SMS,当我的客户按下Send
按钮时,浏览器将继续加载,直到 SMS 发送给他的所有联系人(可能是 100000 个联系人或更多),所以需要从 2-5 分钟。同时,如果客户端按下浏览器Refresh
按钮或同一页面上的任何其他按钮,它将破坏发送过程。
我需要显示一个弹出进度条,以防止用户在Sending
流程结束之前执行任何操作。
请问有什么建议吗?
使用某种锁,甚至是文件锁。然后使用 ajax 每 X 秒轮询一次以查看作业是否完成。
function send() {
if ( file_exists('/tmp/' . $session_key . '.lck' ) ) return;
touch ( '/tmp/' . $session_key . '.lck' );
# do the actual job
# ...
unlink( '/tmp/' . $session_key . '.lck' );
}
我的解决方案将是一个后台运行脚本(cron 作业),它只是站在那里读取一种队列列表(SQL 表)并继续它看到的所有新条目。
也许是一个小的客户端脚本,它调用后面的东西,只计算行数并将其返回到前端。
试试这个:
function checkRefresh()
{
if( document.refreshForm.visited.value == "" )
{
document.refreshForm.visited.value = "1";
}
else
{
document.write ('
$(function2() {
// a workaround for a flaw in the demo system (http://dev.jqueryui.com/ticket/4375), ignore!
$( "#dialog:ui-dialog" ).dialog( "destroy" );
$( "#dialog-modal" ).dialog({
height: 140,
modal: true
});
});
$(function() {
$( "#progressbar" ).progressbar({
value: 59
});
});
')
}
}
确保你有 jQuery!
标记:
<div class="demo">
<div id="dialog-modal" title="Basic modal dialog">
<div id="progressbar"></div>
</div>
</div>
然后用这个替换你的身体标签:
<body onLoad="JavaScript:checkRefresh();">
并将其添加到您的 HTML 中:
<form name="refreshForm">
<input type="hidden" name="visited" value="" />
</form>
无论如何,这会检测到重新加载并执行加载栏,这将阻止它们重新加载(希望如此)
loading bar
你的问题不仅仅是lot of things are wrong with your application architecture
问题 ? Even if the person does not click refresh and there is a connection issue what happens
快速解决方案
采取SMS information
存放在Database
发送以后使用cron JOB
更好的解决方案
采用Messaging Queue
您不必在用户手机上显示加载栏....Message Sent
会是更好的选择
谢谢
:)