本来、この CP は単一送信の SMS インターフェイスです。さまざまな理由により、メッセージを編集するたびに、Web サイトのすべてのメンバー (数万人のメンバー) に一斉送信を実装する必要があります。このプログラムの難しさは、MYSQL から MSSQL への異なるデータベース サーバー間で数千行のレコードを送信し、リアルタイムで進行状況を表示し、送信後に結果についてフィードバックを提供することです。
テキストメッセージの送信プロセス中に次の要件があります:
1) プログラムのタイムアウトは許可されません; 2) 携帯電話番号の有効性を自動的に検出します; 3) 送信の進捗率を計算します。
4) SQL ステートメントをオーバーロードすることなく、MYSQL から MSSQL までの異なるデータベース サーバー間で数千行のレコードを挿入および更新できます。解決策を簡単に説明します:
JQ で AJAX スクリプトを使用して、SMS レコードを送信するためのアプリケーションを送信します。プログラムはアプリケーション レコードを読み取り、SESSION を使用して進行状況データを記録し、メッセージの数に基づいてレコード内の未送信の SMS の携帯電話番号を返します。プログラムを送信する前に携帯電話番号を追加してください。 AJAX は最初に返されたレコード データを受信し、携帯電話番号を再帰関数に送信し、その後、進行状況が 100% に達するまで関数内の残りの携帯電話番号を繰り返し送信します。
よく分かりませんが、明確に説明していません。 参照コードは次のとおりです。
function send_onesms(s,p,sendid){ //これは最初の AJAX 送信です
if (sendid==){
$.prompt(送信するテキスト メッセージをまだ選択していませんか?,{buttons:{OK:true}});
false を返します;
}
var totel = ;
$(#loading).show();
$.ajax({
タイムアウト: 36000、
入力: 「GET」
URL: "/admincp/page.php",
データ: "showtype=2&page="+p+&sendid=+sendid,
beforeSend: function(){
$.ajax({async:true,url: "/admincp/jindu.php?act=clear&rnd="+new Date().getTime(), success: function(response){$("#jindu").html (応答);}、データ型: "html"});
$(a.sendclass).html(ロック状態).removeAttr("onclick");
$(#sid+sendid).html(送信中...).removeAttr("onclick");
}、
成功: function(msg){
$(#i2page).val=p;
//$(#smslist).html(unescape(msg));
//$(#loading).hide();
if (msg!=over){
totel = msg;
// setInterval(function() { $.ajax({async:true,url: "/admincp/jindu.php?rnd="+new Date().getTime(), success: function(response){$(" #jindu").html(response);}, dataType: "html"}) },1000);
}
}
});
Send_sms(s,p,sendid,totel);
//window.clearInterval(スレッド);
}
function send_sms(s,p,sendid,totel){ //再帰関数
$.ajax({
タイムアウト: 36000、
入力: 「POST」
URL: "/admincp/page.php?rnd="+new Date().getTime(),
データ: "showtype=2&page="+p+&sendid=+sendid+&totel=+totel,
成功: 関数(応答){
If (応答!=終了){
$.ajax({async:true,url: "/admincp/jindu.php?rnd="+new Date().getTime(), success: function(response){$("#jindu").html(response );}、データタイプ: "html"});
setTimeout(send_sms(s,p,sendid,response),1000);
}その他{
$.ajax({async:true,url: "/admincp/jindu.php?act=over&rnd="+new Date().getTime(), 成功: function(response){alert(response);}, dataType: "html"});
$(#loading).hide();
menu_sec2_move(p);
}
}
});
}