php主要负责什么? 瓶颈在哪里?如果是php效率问题的话,可以安装Zend Optimize,eAccelerator还不行的话,就别用php了.重新设计架构吧

解决方案 »

  1.   

    应该是你的SQL的问题吧,
    你能不能把你的问题描述的详细点?
      

  2.   

    问题就是: 上线人数一超过50人就开始卡,但是服务器相对来说配制还是不错的,所以硬件应该不会有什么问题。php里面使用了大量的数据库查询语句,但是我不确定是不是和这个有关。
    就是因为不知道原因出在哪儿,所以想请大家告诉我 一般什么情况下,写出什么样的错误代码会导致效率低下。 谢谢
      

  3.   

    "php里面使用了大量的数据库查询语句", "上线人数一超过50人就开始卡";
    好像是数据库访问并发的瓶颈,应该把sql与php分离:
    过中间件访问数据库,php仅负责html的请求与展现
      

  4.   

    换用算法,更换查询效率更高的查询语句!
    另外你可以考虑,用一点你的空间来换效率!数据库的字段多一些,尽量少用Join !
    具体怎样提高查询效率,网上很多的,你搜一下吧……
    Best Wishes!
      

  5.   

    一卡:php里面使用了大量的数据库查询语句
    二卡:数据结构或者算法
    解决办法:语句方面重新弄吧,尽量减少访问数据库的次数。其次如果减不了多少,就再好好研究下数据库各表的设计,对当前数据结构进行优化。最后再考虑下AJAX是否对你有帮助。------------------
    个人看法,仅供参考。
      

  6.   

    基本问题可以有如下分析(可能不全)
    1.MySQL数据表没有进行优化,包括LIMIT,和表存储结构的优化,建立索引等等
    2.代码编写不注重细节,数组的使用,函数的使用不注重效率的小细节问题
    3.架构没有足够的优化,静态页面和动态页面没有严格分离,或Cache方式有问题
    4.服务器负载平衡没有做,后台解析器没有足够的内存或优化
    5.Ajax没有很好的应用,导致服务请求太多或过于集中
    ---------------个人意见 仅供参考-----------------------------占个位置,推广一下团队,(*^__^*) 嘻嘻……
    -------------------------------------------------------------
    SuRaid团队主要承接嵌入式、Web、美工、算法设计等业务
    ———————— 我们的宗旨 ————————
    求实创新,注重技术,长期合作,稳固发展团队网址: http://www.suraid.cn
    团队邮箱: [email protected]
      

  7.   

    apache 设置的连接熟
    mysql  的连接数top看看CPU看看 mysql的设置,是适合什么规模应用的.
    mysql设置的不好,影响很大但你说这50人就开卡,有点...那啥
    代码好好整理一下吧,查询数据尽量优化,数据表isam还是inno?
    事务少用.
      

  8.   

    一卡:php里面使用了大量的数据库查询语句 
    二卡:数据结构或者算法 
    解决办法:语句方面重新弄吧,尽量减少访问数据库的次数。其次如果减不了多少,就再好好研究下数据库各表的设计,对当前数据结构进行优化。最后再考虑下AJAX是否对你有帮助。 ------------------ 
    个人看法,仅供参考。
      

  9.   

    就只有一个问题数据库连接过多。解决办法。使用对象,并使用构造函数。这个我做个实验的。
    同一个类,方法A:只在构造函数里调用数据库,其他方法都调用类属性。
    方法B:使用方法的时候,再调用数据库。调用1次时,方法B略微比方法A快.一般是0.007秒以内。调用1000次时,方法A还是0.007到0.008秒。方法B花费时间是2秒以上。原因是方法A把数据取出后放到了内存。而方法B是边用边取,造成了极大的浪费。
      

  10.   

    多谢高手们的指点。 目前还想知道的两个问题,一个是在哪儿设置mysql的连接数,还有一个就是想问楼上的朋友, 我还是看的有点不太明白, 怎么做才能将调用sql的语句写到构造函数?有例子么对不起我有点白板了,谢谢
      

  11.   

    个人觉的
    1.把sql和前台分开
    2.把服务器放大点,
      

  12.   

    SQL语句问题吧。。占用太多的CPU
      

  13.   

    50人能有多少查询?在线游戏是AS做的吧?建议找查找,和AS做SOCKET连接的服务端,看性能
      

  14.   

    不是as, 后台90%是用php做的,剩下的10%用了少量的ajax
      

  15.   

    楼主这种应用建议:
    表现层:表用SMARTY之类的东西,耗不起.
    控制层:普通...
    应用层:分前置端,CACHE,DB.
    前置端你可以用PHP的SOCKET来写,也可以用其他语言写个SOCKET前置端
    CACHE层嘛,开源的很多了.
    DB的话,MYSQL5以上都支持PROCEDURE了.
      

  16.   

    不知道LZ整体应用架构是什么样子的.
    可以和大家分享下,
    最近对WEB GAME很感兴趣.
      

  17.   

    写网页游戏
    与写小网站不一样多看看开源流行项目是如何提高负载的西安程序员西安PHP学习网
    http://www.phpking.cn 
      

  18.   

    最近忙,才看到。数据库连接可能我没说清楚。"一个页面一般只一次连接,调用函数和调用对象连接有区别吗?"我所说的连接,应该说成是每一次sql。网页游戏中,每个页面,或者说每次刷新,都会需要一个数据库连接对象。
    但可能执行多次sql。举个简单的例子。战斗的时候:getUserInfo(A)获得当前用户的基础参数。
    getUserEquip(A)获得装备加成。getUserInfo(B)获得对手的基础参数。
    getUserEquip(B)获得对手的装备加成。通过战斗公式后,返回双方的值。
    Fight(A,B)
    Fight(B,A)这时候:纯函数的方式。
    我们假设每个get需要执行一次sql.
    那么执行sql的多少就在于Fight()中对get()的引用次数。这时候。加入Fight()内引用了get()20次。(网页游戏内公式也可以很复杂的。)
    那么sql就执行了20次。如果Fight()内引用了get()100次。那么sql就执行了100次。对象的方式。
    在构造函数中对$userinfo和$userequip赋值。
    getUserInfo(A)就变为了getUserInfo()。这里不需要参数,因为对象已经初始化了。(构造函数里赋值)
    构造函数代码类似 $this->userinfo[]=sql[];getUserInfo()内写法类似 return $this->userinfo;这时候,get中就不需要执行sql了。Fight()中不管引用get()多少次。sql执行次数总是4次或者更少。(构造函数的时候还是需要执行sql)。
    -------------------------------------------------------------如果对象调用比较频繁。可以对象序列化。
    这么说吧。构造好对象了,同时在线1000-2000没问题。如果用好了对象序列化。5000没问题。