以前做的教师后台系统是asp做的,
要再次改版,
想用php语言,ajax程序做后台
因为数据实时再查,也不能用缓存。
用ajax做后台行的通吗?
我们标准是10W人在线用户,
使用不要出现数据延迟什么的!
请问纯ajax做得通吗?
有没有人做过承载量人多的。
大家提下意见,
使用ajax,还是不用ajax好呢?
要再次改版,
想用php语言,ajax程序做后台
因为数据实时再查,也不能用缓存。
用ajax做后台行的通吗?
我们标准是10W人在线用户,
使用不要出现数据延迟什么的!
请问纯ajax做得通吗?
有没有人做过承载量人多的。
大家提下意见,
使用ajax,还是不用ajax好呢?
这是我们内部分歧的问题,
开发团队5个人,
有1个人不想使用,
有4个人坚持要使用,
这不想使用的是我!
因为这个系统是我维护的!
他们几个是开发部的!
以前经常出现ajax查询延迟时间,
很多老师反映速度太慢,让后我更改大部分不用ajax,
现在用户量又在增加!
数据库支撑不了,要重做读写分离!
开发部人员和我不是一个部门,
他们只管做功能,不去考虑性能
就怕出现以前的问题,到时候还是我来改
他们说必须做出1个能让他们信服大量用户使用数据反映慢的证据和理论
他们才同意修改,
所以很纠结,就想问问,ajax在php语言中,也会出现这种问题吗?
有没有这个方面大量在线用户使用ajax解说这个利与弊问题!
或者有经验的人解说下。
AJAX (Asynchronous JavaScript And XML) 异步的 javascrip 和 XML
不知道你如何用它做后台
访问量大的时候数据延时,首先需要提升硬件性能。没有高速公路,再好的车也跑不起来
asp出现这个问题,我改好啦!
我也想用压力测试!
就是找不到好的软件
好多都付费,
能承载10W人访问的压力测试软件现在还好,才做2个多月,这个系统起码做1年,万一最后压力测试出问题
还是要做1年,时间耗不起!毕竟考试系统以后都是我来维护,有没有人做过这么用户量的后台啊!
他们做ajax后台是,不管什么操作,都是用ajax写
添加改查,全是这样写。数据很多的,表里上亿条数据都有的,差不多200G数据吧!
数据库采用读写分离,但程序,我很郁闷。
只是不是一个部门。
现在我想退出,
主管不同意,做最后,做坏了,
肯定怪我技术没沟通好,
所以出现这个问题,
有没有做过ajax压力测试的,
很需要一些数据参考!!
function checkAdminUserType(uid, opt_type)
{
var states = 0;
if (opt_type == 1) {
states = 1;
}
$.ajax({
type: 'get',
cache: false,
url: 'admin_user_management_action.php',
data: {method: 'query_admin_user', PAGEINDEX: 1 , SPLITNUM: 1, UID: uid, GID: '', UTYPE: '',
ACCOUNT: '', PASS: '', REALNAME: '', SFZCODE: '', MOBILEPHONE: '', TEL: '', STATES: states,
CREATETIME: '', AREA: '', SCHID: ''},
success: function(result){
var ret_obj = eval("("+result+")");
if (ret_obj.RETCODE == 1) {
if (ret_obj.RETOBJ[0].UTYPE == 3) { //代理商用户
queryAgentIsExist(uid, opt_type);
}
if (ret_obj.RETOBJ[0].UTYPE == 1 || ret_obj.RETOBJ[0].UTYPE == 2 || ret_obj.RETOBJ[0].UTYPE == 16
|| ret_obj.RETOBJ[0].UTYPE == 17 || ret_obj.RETOBJ[0].UTYPE == 18) {
//老师,正副校长,班主任,教导主任
queryTeacherClassIsExist(uid, opt_type);
}
} else {
alert('异常');
return false;
}
},
error: function(){alert('异常');return false;}
});
}; //查询代理商信息是否存在
function queryAgentIsExist(uid, opt_type)
{
var states = 1;
if (opt_type == 1) {
states = 0;
}
$.ajax({
type: 'get',
cache: false,
url: '../agent/agent_management_action.php',
data: {method: 'query_agent', PAGEINDEX: 1, SPLITNUM: 1, AID: '', UID: uid, NAME: '',
LINKNAME: '', LINKMBPHONE: '', CNAME: '', STATES: states, CREATETIME: ''},
success: function(result){
var ret_obj = eval("("+result+")");
if (ret_obj.RETCODE == 1) {
if (opt_type == 1) {
deleteAgentRecord(ret_obj.RETOBJ[0].AID);
} else {
recoverAgentRecord(ret_obj.RETOBJ[0].AID);
}
}
},
error: function(){alert('异常');return false;}
});
}; //删除代理商信息
function deleteAgentRecord(aid)
{
$.ajax({
type: 'get',
cache: false,
url: '../agent/agent_management_action.php',
data: {method: 'delete_agent', AID: aid},
success: function(result){
var ret_obj = eval("("+result+")");
if (ret_obj.RETCODE != 0) {
alert('异常');
return false;
}
},
error: function(){alert('异常');return false;}
});
}; //恢复代理商信息
function recoverAgentRecord(aid)
{
$.ajax({
type: 'get',
cache: false,
url: '../agent/agent_management_action.php',
data: {method: 'recover_agent', AID: aid},
success: function(result){
var ret_obj = eval("("+result+")");
if (ret_obj.RETCODE != 0) {
alert('异常');
return false;
}
},
error: function(){alert('异常');return false;}
});
}; //查询老师所管理的班级信息是否存在
function queryTeacherClassIsExist(uid, opt_type)
{
var states = 1;
if (opt_type == 1) {
states = 0;
}
$.ajax({
type: 'get',
cache: false,
url: '../teacher/teacher_class_management_action.php',
data: {method: 'query_teacher', PAGEINDEX: 1, SPLITNUM: 1, TID: '', UID: uid, AREA: '', SID: '',
STATES: states, MOBILEPHONE: '', CREATETIME: ''},
success: function(result){
var ret_obj = eval("("+result+")");
if (ret_obj.RETCODE == 1) {
if (opt_type == 1) {
deleteTeacherClassRecord(ret_obj.RETOBJ[0].TID);
} else {
recoverTeacherClassRecord(ret_obj.RETOBJ[0].TID);
}
}
},
error: function(){alert('异常');return false;}
});
}; //删除老师所管理的班级信息
function deleteTeacherClassRecord(tid)
{
$.ajax({
type: 'get',
cache: false,
url: '../teacher/teacher_class_management_action.php',
data: {method: 'delete_teacher', TID: tid},
success: function(result){
if (ret_obj.RETCODE != 0) {
alert('异常');
return false;
}
},
error: function(){alert('异常');return false;}
});
}; //恢复老师所管理的班级信息
function recoverTeacherClassRecord(tid)
{
$.ajax({
type: 'get',
cache: false,
url: '../teacher/teacher_class_management_action.php',
data: {method: 'recover_teacher', TID: tid},
success: function(result){
if (ret_obj.RETCODE != 0) {
alert('异常');
return false;
}
},
error: function(){alert('异常');return false;}
});
}; //恢复查询记录
function recoverSelectedRecord()
{
var recover_uid_str = "";
var recover_record_num = 0;
$('input[name="uid"]:checked').each(function(){
if (recover_uid_str == "") {
recover_uid_str = $(this).val();
} else {
recover_uid_str = recover_uid_str +','+ $(this).val();
}
recover_record_num = recover_record_num+1;
});
if (recover_record_num == 0) {
alert("请选择要恢复的内容");
return false;
}
$.ajax({
type: 'get',
cache: false,
url: 'admin_user_management_action.php',
data: {method: 'recover_admin_user', UID: recover_uid_str},
success: function(result){
var ret_obj = eval("("+result+")");
if(ret_obj.RETCODE == -1){
alert(ret_obj.RETMSG);
return false;
} else {
alert(ret_obj.RETMSG);
var current_record_num = total_record_num-(current_index-1)*split_num;
var total_page_num = Math.ceil(total_record_num/split_num);
if (recover_record_num == current_record_num && current_index == total_page_num) {
if (current_index != 1) {
current_index = current_index -1;
}
}
queryAdminUser();
recoverAgentAndTeacher(recover_uid_str);
return true;
}
},
error: function(){alert('异常');return false;}
});
};
所以头痛这个,没啥理由啊,
你知道ajax为什么要等吗?是因为php没有执行结束,为什么会不马上结束?因为你的数据库查询太慢。
ajax要等3-5分钟才显示出来,测试的时候没事,大量数据访问的时候出现问题,
你和俺那几个开发部人一样,老说其他问题
关键我想知道你有没有用ajax做过在线1W人以上的网站,
数据查询全是高效查询语句,并且建立好索引的。
如果做过在线1W人以上,数据量达到上亿条查询,
俺就认为我怀疑是错误的,俺就不在过问这个事情啦,
现在就是想找有没有做过经验的人,想请教下,
————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
如果真出现这种情况,只能说明你们的系统设计有严重的问题,不管ajax还是直接访问,性能差距不可能有这么大。
除非,ajax代码写的极烂,一个页面的展示需很多次请求。
2. 关于你描述的,ajax请求很慢,那是服务器端的响应慢,或者是网络原因。与用不用ajax无关!
这个可以用firebug,Yslow等工具分析前端..............
使用了ajax之后,程序和视图界面设计有可能会很明显影响到服务器的性能.
设计得好,可以降低服务器开销.设计得不好,因为异步的特性,用户的不经意的行为都可能成倍增加数据库查询次数等等.绝对可以拖垮一个服务器.
你的这个系统在于数据库,要不停的读写,所以你首先想到的是先数据库优化,然后优化ajax(废弃不必要的请求)
看了一下你的ajax代码,ajax嵌套ajax,不能合并一下吗?网络请求的开销很大的,有可能问题就在这了!ajax由于请求的数据量较少,照理应该比常规的网站访问速度更快,不大可能会出现更差的情况!
主要还是后台请求 和响应的时间,这部分做好了,
为什么你不让他们给你个jajx写后台的理由,不是有项目主管吗?跟主管说说你担心的问题啊!让领导干涉一下或许也是不错的!
手续就判读用户类型这个方法来说checkAdminUserType 发送ajax请求admin_user_management_action.php返还一堆json 数据 根据一些数据的情况调用
//查询代理商信息是否存在 的方法queryAgentIsExist 而该方法又发送ajax 处理该逻辑。
下面还有很多类似的情况。。
那为什么不把该逻辑放到第一次请求admin_user_management_action.php 页面一次性处理完呢。而反复的吧数据拿出来 发送ajax 传回去又处理 又返还数据有发送。。这 这。。我可能水平有限。无法理解里面的你们技术员的得到之处。。所以导致一次逻辑发送了N个ajax 处理。。希望有哪位大哥也帮我解惑下。//判断用户类型
function checkAdminUserType(uid, opt_type)
{
var states = 0;
if (opt_type == 1) {
states = 1;
}
$.ajax({
type: 'get',
cache: false,
url: 'admin_user_management_action.php',
data: {method: 'query_admin_user', PAGEINDEX: 1 , SPLITNUM: 1, UID: uid, GID: '', UTYPE: '',
ACCOUNT: '', PASS: '', REALNAME: '', SFZCODE: '', MOBILEPHONE: '', TEL: '', STATES: states,
CREATETIME: '', AREA: '', SCHID: ''},
success: function(result){
var ret_obj = eval("("+result+")");
if (ret_obj.RETCODE == 1) {
if (ret_obj.RETOBJ[0].UTYPE == 3) { //代理商用户
queryAgentIsExist(uid, opt_type);
}
if (ret_obj.RETOBJ[0].UTYPE == 1 || ret_obj.RETOBJ[0].UTYPE == 2 || ret_obj.RETOBJ[0].UTYPE == 16
|| ret_obj.RETOBJ[0].UTYPE == 17 || ret_obj.RETOBJ[0].UTYPE == 18) {
//老师,正副校长,班主任,教导主任
queryTeacherClassIsExist(uid, opt_type);
}
} else {
alert('异常');
return false;
}
},
用了会有更好的用户体验,但相应也要付出更高的成本,开发成本和维护成本,特别是如果还用了CDN的情况下,ajax请求必须要支持自动重发才行对于你们目前的技术水平,建议还是不要用了