佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 845|回复: 12

PHP的意见

[复制链接]
发表于 4-11-2006 10:22 PM | 显示全部楼层 |阅读模式

  1. <?PHP
  2. include("conn.php");


  3. $sql = "Select name2 FROM test group by name2";
  4. $result = mysql_query($sql);
  5. $total = mysql_num_rows($result);

  6. echo "<table border='1' id='table1'>";
  7.         for ($i = 1; $i<=$total; $i++){
  8.         $row = mysql_fetch_array($result);
  9.         $name2 = $row['name2'];
  10.                
  11.                 $sql1 = "SELECT name FROM test WHERE name2 = '$name2' order by name";
  12.                 $result1 = mysql_query($sql1);
  13.                 $total1 = mysql_num_rows($result1);
  14.                
  15.                 for ($l  = 1; $l<=$total1; $l++){
  16.                 $row1 = mysql_fetch_array($result1);
  17.                 $name = $row1['name'];
  18.                        
  19.                         echo "<tr>";
  20.                                 echo "<td width='100'>";
  21.                                
  22.                                 if ($l== '1'){
  23.                                         echo $name2;
  24.                                 } else {
  25.                                         echo ".";
  26.                                 }
  27.                                
  28.                                 echo "</td>";
  29.                                
  30.                                 echo "<td width='100'>$name</td>";
  31.                                
  32.                                 $sql2 = "SELECT name2 FROM test2 WHERE name2 = '$name2' order by name";
  33.                                 $result2 = mysql_query($sql2);
  34.                                 $total2 = mysql_num_rows($result2);
  35.                                
  36.                                 for ($c =1; $c<=12; $c++){
  37.                                         $row2 = mysql_fetch_array($result2);
  38.                                         $name2 = $row1['name2'];
  39.                
  40.                                         echo "<td width='100'>$name2</td>";
  41.                                 }
  42.                                
  43.                         echo "</tr>";
  44.                 }
  45.         }
  46. echo "</table>";

  47. ?>
复制代码


从中可以看到我用了3个for..loop和3个sql command。

如果我用在大型的db的话,
里面有很多data的那种。
会不会有问题呢??

因为不想它loop太久变成timeout。
这样的话就麻烦了

来,各位大大说说你们的意见。
回复

使用道具 举报


ADVERTISEMENT

发表于 5-11-2006 01:43 AM | 显示全部楼层
Select name2 FROM test group by name2
SELECT name FROM test WHERE name2 = '$name2' order by name
SELECT name2 FROM test2 WHERE name2 = '$name2' order by name


DB design有待改善哦...如果test和test2能加入 ID 来做Primary Key..
就方便好多了

例如:
SELECT * FROM test a,test2 b where a.name_id = b.name_id and a.name2 = ".$name2." order by name;
那你就不用跑3次query了...
回复

使用道具 举报

发表于 5-11-2006 09:04 AM | 显示全部楼层
原帖由 红发 于 4-11-2006 10:22 PM 发表

<?PHP
include("conn.php");


$sql = "Select name2 FROM test group by name2";
$result = mysql_query($sql);
$total = mysql_num_rows($result);

echo "<table bo ...

TimeOut不只是等待你的DB Searching, 而是你的HTML太多内容没办法在一定的时间内Transfer到你的电脑。

建议使用Paging来Handle大笔的资料。

在你的第一个Query就要Set Limit了, 如:
Select name2 FROM test group by name2 LIMIT 0,30
回复

使用道具 举报

 楼主| 发表于 5-11-2006 11:01 AM | 显示全部楼层
原帖由 xfuture 于 5-11-2006 01:43 AM 发表


DB design有待改善哦...如果test和test2能加入 ID 来做Primary Key..
就方便好多了

例如:
SELECT * FROM test a,test2 b where a.name_id = b.name_id and a.name2 = ".$name2." order by nam ...


不好意思第三个少了一点东西

Select name2 FROM test group by name2
SELECT name FROM test WHERE name2 = '$name2' order by name
SELECT name2 FROM test2 WHERE name2 = '$name2' AND date = '[B]$date'order by name

它还要loop月份的

所以他才在<td>里面loop咯

还有什么要改进的吗
回复

使用道具 举报

 楼主| 发表于 5-11-2006 11:05 AM | 显示全部楼层
原帖由 belon_cfy 于 5-11-2006 09:04 AM 发表

TimeOut不只是等待你的DB Searching, 而是你的HTML太多内容没办法在一定的时间内Transfer到你的电脑。

建议使用Paging来Handle大笔的资料。

在你的第一个Query就要Set Limit了, 如:
Select n ...


第一个因该不多。
少过10个。
第二个就很多了,有50-60个这样。

没办法,人家要一次看完吗。

还有就是他们在localnetwok跑的。
但是不知道为何会有点慢
所以才担心会timeout这回事
回复

使用道具 举报

发表于 5-11-2006 05:38 PM | 显示全部楼层
跑local都timeout..就代表很有问题了...

第一次10个
第二次50~60
第三次你没说..就当你也是50~60
10*50*50 = 你总共要Loop 25000次...跑25000次Query..

太夸张了...倒不如你说说看你想要写什么..
我帮你看看比较好...
回复

使用道具 举报

Follow Us
 楼主| 发表于 6-11-2006 11:12 AM | 显示全部楼层
原帖由 xfuture 于 5-11-2006 05:38 PM 发表
跑local都timeout..就代表很有问题了...

第一次10个
第二次50~60
第三次你没说..就当你也是50~60
10*50*50 = 你总共要Loop 25000次...跑25000次Query..

太夸张了...倒不如你说说看你想要写什么..
我帮你 ...


第三次是12次。因为一年有12个月
10*60*12=7200

也没有timeout啦。

是担心会timeout罢了。
因为我在我的PC是没有问题的。

他们就不知道为何会有点慢。

只是想知道一下看你们有什么看法和好的方法来做这样的东西。
因为要跑一年的record所以有点担心。
本人也没有做过需要跑一年record的system。
回复

使用道具 举报

发表于 6-11-2006 01:31 PM | 显示全部楼层
原帖由 belon_cfy 于 5-11-2006 09:04 AM 发表

TimeOut不只是等待你的DB Searching, 而是你的HTML太多内容没办法在一定的时间内Transfer到你的电脑。

建议使用Paging来Handle大笔的资料。

在你的第一个Query就要Set Limit了, 如:
Select n ...


什么是Paging和Handle?
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 6-11-2006 09:17 PM | 显示全部楼层
原帖由 EDWINcheong 于 6-11-2006 01:31 PM 发表


什么是Paging和Handle?


分页
回复

使用道具 举报

发表于 6-11-2006 10:06 PM | 显示全部楼层
原帖由 红发 于 6-11-2006 11:12 AM 发表


第三次是12次。因为一年有12个月
10*60*12=7200

也没有timeout啦。

是担心会timeout罢了。
因为我在我的PC是没有问题的。

他们就不知道为何会有点慢。

只是想知道一下看你们有什么看法和好的 ...

尽量不要开太多的connection,还要注意deadlock等...加上你的db type 是myISAM的话。。可能就会发生table locking了。。
如果你的concurrent user多的话就要注意。。
能的话也可以用store procedure来做

目前我再写的系统在同一时间里会有很多的concurrent processing,所以我把他分开在不同server来执行,条件是你要有syn server等

---------------------------------------------------------------
回复

使用道具 举报

 楼主| 发表于 6-11-2006 10:36 PM | 显示全部楼层
原帖由 max5007 于 6-11-2006 10:06 PM 发表

尽量不要开太多的connection,还要注意deadlock等...加上你的db type 是myISAM的话。。可能就会发生table locking了。。
如果你的concurrent user多的话就要注意。。
能的话也可以用store procedure来做

目 ...


keke,那时end year report的design。
没有办法的了。

一年不知道他们会开多少次

其他的我就没有这样的当心
回复

使用道具 举报

发表于 7-11-2006 09:04 AM | 显示全部楼层
其实你应该简略地说出..
你的Form是怎样...例如user会有什么选择...
然后你的Result会怎样..
那我想会有更多人会帮到你...
其实你不用一次过显示12个月的成绩出来...你可以让user选择什么月份..
身为一个程式员...
你应该要考虑到如何保护你的系统...阿不然每天server down..你也是挺麻烦的...
回复

使用道具 举报

发表于 13-11-2006 10:16 AM | 显示全部楼层
这样写不可能吧,试想如果有上万笔资料会怎样。你还是另作设计吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 14-6-2024 11:20 PM , Processed in 0.161901 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表