用户
 找回密码
 入住 CI 中国社区
搜索
楼主: kinas
收起左侧

[Web] 正在做个系统,希望大家给些建议

  [复制链接]
发表于 2008-10-9 16:20:36 | 显示全部楼层
代码有问题吧~~~
发表于 2008-10-9 16:21:55 | 显示全部楼层
优化一下代码,改一下数据库的结构,应该没有问题的...
发表于 2009-5-10 12:28:44 | 显示全部楼层
写过程式php吧,反正前台不需要图片(可能只有学校logo一张图)
后台用CI
发表于 2009-8-1 12:39:15 | 显示全部楼层
我不知道你这问题怎么解决,但我想应该用到Ajax,让用户等待服务器返回信息。每次插入数据前进行锁表(不知这样会不会使速度更慢),操作之前可以试一下用事务,防止操作失败,出现脏数据。
发表于 2009-8-4 09:59:28 | 显示全部楼层
第一种方法是锁文件:
   1. <?php
   2. $ltime = time();
   3. if (file_exists('lock.php')){
   4.         if ($ltime - filectime('lock.php') < 1800) {
   5.                 #logs("busy");
   6.                 exit;
   7.         } else {
   8.                 @unlink('lock.php');
   9.         }
  10. }
  11. $fp = fopen('lock.php','w+');
  12. if (!$fp){
  13. exit;
  14. }
  15. @flock($fp,2);
  16. @fwrite($fp,$ltime);
  17. @fclose($fp);
  18.

  19. do sth..
  20. @unlink('lock.php');
  21. ?>
第二种方法:
创建一个扩展
在PHP_MINIT中创建队列,在PHP_RINIT初始化并设置本次请求的队列状况,在PHP_RSHUTDOWN中释放资源。
队列要在web服务器主进程中创建,并在主进程的PHP_MSHUTDOWN中清理。注意并发状态,尤其是Apache2中,需要使用TSRM.h来保证队列状态的线程安全,通讯随便使用文件、共享内存都可以。

评分

参与人数 1威望 +2 收起 理由
Hex + 2 精彩解答

查看全部评分

发表于 2009-10-21 16:28:20 | 显示全部楼层
恩,受教了啊。。
发表于 2010-6-23 21:50:50 | 显示全部楼层
分布式就别折腾了吧,会为了一个学期仅有的几次选课去搭分布式系统?
优化确实蛮重要,Bluewolf说的,特别SQL查询优化,还有前台图片和文件数控制,减少HTTP请求数,缓存也蛮重要,考虑Memcache比如课程基本信息(选课人数这些及时的自己控制下),适当使用AJAX,但不是HEX说的 一直发AJAX请求给服务器,可以做一个像QQ空间一样的,在线服务人数多时候给一个15秒左右的等候时间缓解服务器压力。
发表于 2010-6-29 11:03:53 | 显示全部楼层
2w人应该不至于到崩溃吧
姑且就算选课时间只有两2小时
每小时(3600秒)1w人
这样算下来每秒2-3人
算上100倍方差
每秒200-300
发表于 2010-7-10 05:15:43 | 显示全部楼层
程序有提升的余地 但这么多人并发感觉还是硬件的问题吧 你测试下看看硬件的瓶颈在哪。。这么多人。。咋感觉内存 io都有不小压力。。
发表于 2010-7-16 00:20:52 | 显示全部楼层
向HEX老大说的,用AJAX不断执行一个控制器方法,我理解为建一个time_out_queue方法,就是对当前不在线的用户进行检测,如果发现这个用户当前不在线,就将其从队列中删除。
瞎掺和~呵呵

本版积分规则