مشکل در فشاراومدن به سرور در ارسال Ajax

irpcpro

تازه وارد
2/3/18
21
0
1
سلام .

من یه کد ساده php و ajax و mysql نوشتم ، ک از دو کاربر متن هاشونو میگیره و داخل دیتابیس ذخیره میکنه (سیستم چت آنلاین بین دو کاربر)

همه چیز اوکی هست و کامل کدها نوشته شده .

ولی یه قسمت کد که مربوط به چک کردن داعم دیتابیس هست ک اگه هروقت پیام جدید ارسال شد ، اونو بیاد نمایش بده .

این چک کردن رو هر 3 ثانیه یکبار انجام میده . ولی اینکار فشار سنگینی روی سرور ایجاد میشه .

داخل ajax قسمت error هم یه متن نوشتم ک هروقت از سمت سرور مشکلی پیش اومد اون متن رو نمایش بده :

error: function () {
alert('خطا در سرور . صفحه را مجددا بارگذاری نمایید 70');
}


وقتی سیستم درحال چک کردنه (سایت بازه) ، صفحه رو رفرش میکنم این پیام رو نمایش میده ..

با اینکه سیستم های دیگه ک از همین الگوریتمی استفاده میکنن برای سیستم چت ، همچین فشاری روی سرور نمیاد و وقتی صفحه رو رفرش میکنم پیام اروری نمیده .

 

Mohammad

مدیر انجمن
عضو کادر مدیریت
6/4/08
15,402
478
83
33
PersianScript
شما سورس رو نزاشتی که بشه بررسی کرد. اما بهترین راهکار برای این مواقع وب سوکت هست

یک آموزش مناسب با PHP گذاشتند در یوتیوب  ، پیشنهادش میکنم. (سورس هم در توضیحات آموزش قرار دادند)



 

irpcpro

تازه وارد
2/3/18
21
0
1
خیلی ممنون .

بله ، آخه کد چیز خاصی نداره . میخواستم بدونم الگوریتم دقیقش به چه صورت هست برای اینکه به سرور فشار نیاد و همش درخواست به سرور ارسال نشه .

این کد jq هست :

function chat_check_updates(){
toUserId = 0;
if($("* div#eachPerCmFromUserDU").length)
toUserId = $("* div#eachPerCmFromUserDU.activeThisChat").data('iddu');

$.ajax({
url : ajaxurl,
type : 'POST',
dataType : 'json',
cache : false,
data: {
action : 'loadingChat',
'doctor': DUDI,
'user' : toUserId,
},
success: function (response) {
if(response.msgch != "" && response.msgch != null){
$("#bgBoxChatsTextDU div#beforeMeAddBox").before(response.msgch);
ScrollDownChat();
playSound('get');
}
setTimeout(() => { chat_check_updates(); }, 5000);
},
error: function () {
alert('خطا در سرور . صفحه را مجددا بارگذاری نمایید 70');
}
});
}


بعد قسمت php هم برای اینکه کامل کل دیتابیس رو جستجو نکنه ، تنها یک table رو بررسی میکنه ک اگه اون مقدار 1 شد ، بفهمه آپدیت جدید هست و کل دیتابیس رو لود کنه .

از این طریق یکم فشار روی سرور رو برداشتم ، ولی نمیدونم کد ajax درست هست ؟

با اینکه درست کار میکنه ، احساس بدی دارم و حتی وقتی صفحه رو رفرش میکنم یا روی لینکی کلیک میکنم (که بره یه صفحه دیگه ) آلرت error رو نمایش میده .

 
آخرین ویرایش توسط مدیر: