讨论:几个效率等问题和众兄弟探讨
1. 使用include还是function效率高?
将公用HTML代码分多个文件进行include好还是function一下return $str好?include可能include好几
次,而function只需要include一次,初始化一次,虽然要执行很多次。不过我还是不知道哪个效率高点
。
2. 单文件读取好还是分文件读取好?
我习惯,而且很喜欢使用单个index.php文件来包含,如:
<?php
//index.php
require "header.php";
case aa:
require "xx.php";
break;
case bb:
require "xxx.php";
break;
......
default require "xxxx.php";
require "footer.php";
?>
这样的好处是文件重用性非常好,感觉很好控制,但是每次载入页面都是读取index.php文件,虽然可能
读取的内容都不多,不过要是10000人同时访问,那么执行效率如何?
另一种方法是分文件。比如:
<?php
//index.php
require "header.php";
require "main.php";
require "footer.php";
?>
<?php
//login.php
require "header.php";
require "login_main.php";
require "footer.php";
?>
.........
这样的分散文件来组成整个系统,但是这样就多了好多require等重复代码。显然要是10000人同时访问
这些文件,其实还是10000人同时require一次header.php和footer.php,不过感觉上比单个index.php分
散,我现在还是不知道哪个效率高点,哪个更好一点。
3. 权限问题。
目前不知道有什么好的权限控制方法,我所知道的是“组”的概念和“权限”概念。
我看了一下FB论坛的数据库设计,发现有一张“用户组”的表和一张“权限表”,两张表内容基本相同
,请问这样做的好处是什么?为什么还要开辟另外一张权限表?这两张用途上有什么不同?
附两张表:
CREATE TABLE fb_permissions (
permissionid int(4) unsigned NOT NULL default '0',
userid int(10) unsigned NOT NULL default '0',
usergroupid int(10) unsigned NOT NULL default '0',
forumid int(3) NOT NULL default '0',
canview enum('y','n') NOT NULL default 'y',
cancreatetopic enum('y','n','c') NOT NULL default 'y',
canpost enum('y','n') NOT NULL default 'y',
cancreatepoll enum('y','n') NOT NULL default 'y',
canupload enum('y','n') NOT NULL default 'y',
canvote enum('y','n') NOT NULL default 'y',
canmovetopic enum('y','n') NOT NULL default 'y',
canlock enum('y','n') NOT NULL default 'y',
candeletetopic enum('y','n') NOT NULL default 'y',
canedittopic enum('y','n') NOT NULL default 'y',
caneditpost enum('y','n') NOT NULL default 'y',
candeletepost enum('y','n') NOT NULL default 'y',
canrate enum('y','n') NOT NULL default 'y',
candistillate enum('y','n') NOT NULL default 'y',
canannounce enum('y','n') NOT NULL default 'y',
cansetpermissions enum('y','n') NOT NULL default 'y',
ismoderator enum('y','n') NOT NULL default 'y',
PRIMARY KEY (permissionid)
) TYPE=MyISAM;
CREATE TABLE fb_usergroup (
usergroupid int(3) unsigned NOT NULL default '0',
groupname varchar(20) NOT NULL default '',
title varchar(255) NOT NULL default '',
canview enum('y','n') NOT NULL default 'y',
cancreatetopic enum('y','n','c') NOT NULL default 'y',
canpost enum('y','n') NOT NULL default 'y',
cancreatepoll enum('y','n') NOT NULL default 'y',
canupload enum('y','n') NOT NULL default 'y',
canvote enum('y','n') NOT NULL default 'y',
canmovetopic enum('y','n') NOT NULL default 'n',
canlock enum('y','n') NOT NULL default 'n',
candeletetopic enum('y','n') NOT NULL default 'n',
canedittopic enum('y','n') NOT NULL default 'n',
caneditpost enum('y','n') NOT NULL default 'n',
candeletepost enum('y','n') NOT NULL default 'n',
canrate enum('y','n') NOT NULL default 'n',
candistillate enum('y','n') NOT NULL default 'n',
caneditprofile enum('y','n') NOT NULL default 'n',
candeleteuser enum('y','n') NOT NULL default 'n',
canannounce enum('y','n') NOT NULL default 'n',
cansetpermissions enum('y','n') NOT NULL default 'n',
canadmin enum('y','n') NOT NULL default 'n',
PRIMARY KEY (usergroupid)
) TYPE=MyISAM;
4. 使用数据库效率高还是使用文本读取效率高。
比如论坛分类,是直接放在文件里好,还是放在数据库里效率高?如果分类比较固定,而不是随时修改
和添加,是不是文件比较好?比如:
<?php
//forum.php
$ForumClassId1 = 1;
$ForumClassOrder1 = 2;
$ForumClassName1 = "测试分类一";
$ForumClassAdmin1 = "会员一";
$ForumClassInfo1 = "分类说明一";
$ForumClassId2 = 2;
$ForumClassOrder2 = 1;
$ForumClassName2 = "测试分类二";
$ClassAdmin2 = "会员二";
$ForumClassInfo2 = "分类说明二";
//............
?>
数据库的好处是添加修改比较方便,但是要是不是频繁修改和添加呢?
暂时就这些,呵呵,我写的代码不多,经验还很不足,请各位兄弟多指点。