php优化

WBOY
WBOYOriginal
2016-06-23 14:23:561014Durchsuche

本帖最后由 xuzuning 于 2013-09-30 13:05:14 编辑

<?php//define server info begin$servername = "192.168.1.182";  $serverusername = "whh";  $serverpassword = "whh"; $database="whh";$usertable="user";$userfield="user_name";$passwordfield="password";//define server info end$fh  = fopen("php://stdin", 'r');$stdout = fopen('php://stdout', 'w');$fs = fopen("auth-log.txt." . getmypid(), 'a');if(!$fh){    die("Cannot open STDIN\n");}do{    $lenBytes = fgets($fh, 3);    $len = unpack('n', $lenBytes);    $len = $len[1];    if($len<1) continue;    $msg = fgets($fh, $len+1);    $toks=explode(':',$msg);    fwrite($fs, $msg . "\n");    $method = array_shift($toks);    fwrite($fs, "$method\n");    $result = false;    switch($method){        case 'auth':            list($username, $server, $password) = $toks;            $password = trim($password);            fwrite($fs, "checking user: $username and password $password\n");            //check password begin						$conn=mysql_connect($servername, $serverusername, $serverpassword); 						mysql_query("set names 'utf8'");						if(!$conn){                              						  die("could not connect to the database");						}						$db_select=mysql_select_db($database);//选择数据库        						if(!$db_select)						{						  die("could not to the database");						}						$query="select * from $usertable where $userfield = '$username' and $passwordfield='$password'";//构建查询语句						$result=mysql_query($query);//执行查询						$count=mysql_numrows($result);//取得条数						mysql_close($conn);						if($count > 0){							$result = true;						}else{							$result = false;						}						//check password end            break;        case 'isuser':            list($username, $server) = $toks;            //check password begin						$conn=mysql_connect($servername, $serverusername, $serverpassword); 						mysql_query("set names 'utf8'");						if(!$conn){                              						  die("could not connect to the database");						}						$db_select=mysql_select_db($database);//选择数据库        						if(!$db_select)						{						  die("could not to the database");						}						$query="select * from $usertable where $userfield = '$username'";//构建查询语句						$result=mysql_query($query);//执行查询						$count=mysql_numrows($result);//取得条数						mysql_close($conn);						if($count > 0){							$result = true;						}else{							$result = false;						}						//check password end            break;        default:            $result = false;    }        $message =  @pack("nn", 2, $result);        fwrite($stdout, $message);        $dump = @unpack("nn", $message);        $dump = $dump["n"];        fwrite($fs, $dump . "\n");        flush();} while(true);

大家好!
对php我不懂,请大家看下是否可以对该php做些优化呢?
我是写java的,发现可能在这个地方“$conn=mysql_connect($servername, $serverusername, $serverpassword);”可以进行优化,没有必要每次都生成一个$conn。

回复讨论(解决方案)

没有什么可优化的
在传入的数据中,可能只有 auth,也可能只有 isuser,更可能两者都没有
完全没有必要在可能无需数据库访问的情况下,做数据库连接

程序的优化不是减少代码,而是提升性能

如果传入参数都一致的话,$conn及其判断可以提到do...while前面

如果传入参数都一致的话,$conn及其判断可以提到do...while前面
求关注 有问题想问一下~~


如果传入参数都一致的话,$conn及其判断可以提到do...while前面
求关注 有问题想问一下~~
发帖子问吧,难的老徐出手,简单的很多人出手



如果传入参数都一致的话,$conn及其判断可以提到do...while前面
求关注 有问题想问一下~~
发帖子问吧,难的老徐出手,简单的很多人出手
看到你回复过某人页游私聊器 请问您会做吗 ?




如果传入参数都一致的话,$conn及其判断可以提到do...while前面
求关注 有问题想问一下~~
发帖子问吧,难的老徐出手,简单的很多人出手
看到你回复过某人页游私聊器 请问您会做吗 ?
不会,只是知道原理而已





如果传入参数都一致的话,$conn及其判断可以提到do...while前面
求关注 有问题想问一下~~
发帖子问吧,难的老徐出手,简单的很多人出手
看到你回复过某人页游私聊器 请问您会做吗 ?
不会,只是知道原理而已
哦 好吧 谢谢哈 不过您有认识的人会做这类程序吗?

哦 好吧 谢谢哈 不过您有认识的人会做这类程序吗?
目前没有,最近很少写php,帮不上忙

为什么会有问这个问题。
因为我们项目用的聊天服务器是ejabberd。目前客户端是通过smack去链接的。
发现最大用户登录并发量只有5人。
所以问题应该出现在这3个方面
A.smack客户端。
B.ejabberd服务器本身的配置
C.ejabberd外置校验的时候,通过php去连接mysql的。(所以我看下php有没有可以优化的)

使用pdo,prepare()

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn