phpStudy 适用于生产环境吗?

通吃岛-低手哥 发布于 2014/03/22 15:05
阅读 2K+
收藏 0

  我写了一个PHP WEB应用,客户大概30人。 这个应用封装在一个复杂的存储过程里,当30个人同时执行的时候,只有几个成功。轮流执行的话,执行成功的几率就可以。

客户的配置情况如下:
    服务器: 领导的个人电脑,CPU 2G ,内存 2G
    操作系统: WIN 7 (领导使用WIN 7 系统)
    软件环境: phpStudy (因为这个安装方便,所以我用了这个)

存储过程使用了 临时表、 游标、事物、随机取100条数据,每取一条就根据条件 更新其他表。

我想问一下,针对我的问题,大家有什么解决方案?

我个人电脑测试 3个页面,每个页面自动提交30次, 半个小时,前两个页面合计成功 10次,第三个页面被挂起。 我的机器是宏基 4738G


=============================

问题补充不可以编辑,排版乱了,我的存储过程片段如下,三次这样的循环:

  set i = 1;
  set errno = 0;
  mutiltopic: while i <= cnt do
    select percent , examRange_kid into per, ex_kid from temp_tb where row_number = i;
    if per > 0 then
      insert into exam_main(kid, topic_kid, catlog)
      select exam_kid, kid, 2 from mutiltopic where examRange_kid = ex_kid and is_del <> 1
                and kid not in (select topic_kid from exam_main where kid = exam_kid)
                order by rand() limit 1;
      if (row_count() > 0) then
          update temp_tb set percent = percent - 1 where row_number = i and examRange_kid = ex_kid;
          set mNum = mNum - 1;
          set errno = 0;
      else
          set errno = errno + 1;
      end if;

    else
      set errno = errno + 1;
    end if;
    set i = i + 1;
    if i> cnt then set i = 1; end if;
    if (mNum <= 0) or (errno >= cnt) then leave mutiltopic; end if;
  end while;



以下是问题补充:

@通吃岛-低手哥: set i = 1; set errno = 0; mutiltopic: while i <= cnt do select percent , examRange_kid into per, ex_kid from temp_tb where row_number = i; if per > 0 then insert into exam_main(kid, topic_kid, catlog) select exam_kid, kid, 2 from mutiltopic where examRange_kid = ex_kid and is_del <> 1 and kid not in (select topic_kid from exam_main where kid = exam_kid) order by rand() limit 1; if (row_count() > 0) then update temp_tb set percent = percent - 1 where row_number = i and examRange_kid = ex_kid; set mNum = mNum - 1; set errno = 0; else set errno = errno + 1; end if; else set errno = errno + 1; end if; set i = i + 1; if i> cnt then set i = 1; end if; if (mNum <= 0) or (errno >= cnt) then leave mutiltopic; end if; end while; 这个是我写的存储过程的中间部分,大概三个这样的片段. (2014/03/22 15:28)
加载中
0
通吃岛-低手哥
通吃岛-低手哥

我把SQL优化了一遍,去掉in等全表扫描的,已经很稳定了,现在客户没有找我麻烦了。

0
南湖船老大
南湖船老大

感觉有点像个小兵张嘎拿个弹弓,问:“我能上战场去打鬼子吗?”

pantrick
pantrick
南湖老大的回复总是那么犀利!
0
通吃岛-低手哥
通吃岛-低手哥

我 优化了 SQL 语句:
   select * from mutiltopicwhere examRange_kid in (select examRange_kid from    user_examRange) order by rand() limit mNum

速度提高很多,正在努力中...都是逼出来的啊

0
通吃岛-低手哥
通吃岛-低手哥
嗯,优化后SQL 后, 3秒钟提交了30次,成功14次, 稳定在 14/30 这个点上。
返回顶部
顶部