在PHP中加载栏

时间:2012-04-06 13:18:34

标签: php javascript

过去两天我一直在谷歌搜索,但找不到我想要的东西。

我在PHP中开发了SMSmobile工具,允许客户端发送批量短信,当我的客户按Send按钮时,浏览器将继续加载,直到短信发送给他的所有联系人(可能是100000)联系人或更多)因此需要2-5分钟。同时,如果客户端按下浏览器Refresh按钮或同一页面中的任何其他按钮,则会破坏发送过程。

我需要显示一个弹出式进度条,阻止用户在Sending进程结束之前执行任何操作。

有什么建议吗?

5 个答案:

答案 0 :(得分:2)

使用某种锁,甚至是文件锁。然后使用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' );
}

答案 1 :(得分:1)

我的解决方案是后台运行脚本(cron作业),它只是站在那里读取一种队列列表(SQL表)并继续它看到的所有新条目。

也许一个小的客户端脚本调用后面的东西,只计算行并将其返回到前端。

答案 2 :(得分:0)

试试这个:

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>

无论如何,这会检测到重新加载并执行加载栏,这会阻止它们重新加载(希望如此)

答案 3 :(得分:0)

如果您已开始在页面中执行此操作,我建议您将modal dialoganimated progress bar合并。

您甚至不必在进度条上进行任何计算,只需将其设置为100%,这样看起来就像是在滚动,并添加一些文字,例如,&#34;您的消息正在处理中。&#34;

答案 4 :(得分:0)

您的问题不只是loading barlot 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将是更好的选择

由于

:)