2012-04-06 50 views
1

過去兩天我一直在做谷歌搜索,找不到我想要的。在PHP中載入酒吧

我SMSmobile工具在PHP中,允許客戶發送短信羣發正在開發中,當我的客戶按Send按鈕,瀏覽器將繼續加載,直到短信被髮送給他的所有聯繫人(它可能值設爲100000個聯繫人或更多),所以需要2-5分鐘。同時,如果客戶端按下瀏覽器按鈕或任何其他按鈕來自同一頁面,它會破壞發送過程。

我需要顯示一個彈出進度條,阻止用戶在Sending過程結束之前執行任何操作。

任何建議嗎?

+1

你能表現出一定的你目前如何做的代碼?一個建議可能是不讓實際的SMS發送正在進行的活動。在數據庫中排隊消息並讓後端進程發送消息。這樣用戶可以繼續與網站進行交互。然後該網站可能會在每個頁面上都有某種進度指示器。如果這個過程需要很長時間(超過一分鐘),這將會特別好。 – David 2012-04-06 13:22:35

+0

我會建議使用AJAX和網絡套接字來報告進度。另外,僅僅因爲人員刷新頁面,並不一定要殺死運行請求的服務器端PHP進程。 – crush 2012-04-06 13:23:24

回答

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> 

反正這個檢測重載和執行一個加載欄,這將阻止他們重新加載(希望)

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'); 
} 
0

如果您打算在頁面中發生這種情況,我會建議將modal dialoganimated progress bar合併。

你甚至不需要對進度條進行任何計算,只需將它設置爲100%,看起來就像滾動一樣,並添加一些文本,如「正在處理郵件」。

1

我的解決方案是一個後臺運行腳本(cron job),它只是站在那裏讀取一種Queue列表(SQL Table)並繼續它看到的所有新條目。

也許一個小的客戶端腳本調用某些後面的腳本只是對行進行計數並將其返回到前端。

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會是一個更好的選擇

感謝

:)