1
raincious 2014-11-04 23:47:07 +08:00
1、速度非常之快,1毫秒左右的速度已经足够的快了,按照我的看法是如果数据库设计没问题那么程序没必要继续优化(速度方面)。
2、我看了下你现在的文件,具体是这个: https://github.com/lincanbin/Carbon-Forum/blob/master/register.php 这样的话……感觉你重构好那个ASP的紧接着就得重构这个…… 建议上MVC结构开发,这样虽然性能可能会有损失,但是维护会非常方便。 |
2
lincanbin OP @raincious 前后端分离就够了,反正就我一个人在做,我连PHP框架都没敢用就怕10%~30%的性能损失,还有前端Bootstrap也有太多冗余代码我也没用,以后还打算把jQuery剔掉或者根据需求精简。
然后多重if嵌套的风格其实我也想过,但是这种嵌套方法是效率最高的。 例如 if(XXX1){ $Message = 'XXX1'; } if(XXX2){ $Message = 'XXX2'; } if(XXX3){ $Message = 'XXX3'; } 最后再来 if($Message) { #注册操作 } 这样写起来好看一些,但是性能有一点点损失。 |
3
raincious 2014-11-05 00:02:28 +08:00
|
4
lincanbin OP |
5
raincious 2014-11-05 00:12:36 +08:00
@lincanbin
另外,如果你用框架的话,性能“损失”可能会大于30%。肯定达不到你目前平均小于5ms的速度。我自己的框架不带数据库出页面(路由->控制器->渲染页->输出)最快也需要3ms,这还是PHP 5.5带极限配置的Opcache的情况。 建议不要过度“微优化”,不值得。因为你挖空心思优化出的结果可能一天下来加起来也就能节省几分钟时间(流量小的话,可能只有几秒)。 下面是一份很老的测试数据,只需要注意其中的例外情况(红色)就可以了: http://maettig.com/code/php/php-performance-benchmarks.php |
6
lincanbin OP 性能上抠门点总没错,要是以后访问量要是稍微大点,这个VPS还能顶着继续用。
现在这个VPS上还挂着另一个一天十几万访问、数据库6G的网站,那个网站总体响应就高达3~20ms了。 |
7
lincanbin OP @raincious 而且我功能上不会做太复杂,整体肯定会保持在我的可控范围内。
数据库相对目前前后端的完成度还有些过度设计了,不过就算所有设想的功能都完成,后端代码量应该也不会太大。 鉴权、弹出提示信息、数据库操作等常用操作我都封装好了,可以最大程度复用,最多等我做完了,再整体重构一次,性能肯定要排第一位。 |
8
panxianhai 2014-11-05 06:58:57 +08:00 via iPad
为你的执行力和论坛的速度点赞
|
9
hjc4869 2014-11-05 07:17:19 +08:00 via iPhone
|
10
lincanbin OP @hjc4869 跨平台表现不好,Windows vps 太贵。
另外我发现我域名被中国移动屏蔽了该怎么办?这个域名几年前有人买过,过期好几年后不久前又让我给买了。 |
11
hjc4869 2014-11-05 09:06:37 +08:00
@lincanbin ASP.Net跟PHP的性能真心不是一个级别的,而且现在很多便宜的KVM VPS也支持自己上传iso安装windows了。。
如果只是移动屏蔽的话,工信部投诉吧。。。 |
12
millken 2014-11-05 09:45:32 +08:00
php7都快出来了,你还用php4.
|
13
lincanbin OP @millken 我开发机用的是PHP5.5,VPS上的是最新的PHP5.6,PHP7是实际上是PHPNG,要后年才退出,现在PHP5.6是最新的了。
|
14
lincanbin OP @hjc4869 开源项目的话,还是要方便部署的好,Windows VPS用的人不多。
网络上最常见的虚拟主机又是PHP+MySQL,不然的话,本来Python也和PHP一样是跨平台的——本来有打算用Python。 另外性能的话,等我下次换VPS,装上Facebook的HHVM(现在的VPS是CentOS 5),应该有机会跑进1ms,到时候超越ASP.Net应该不是问题。 |
15
sujin190 2014-11-05 10:45:47 +08:00
不错,很简洁
|
16
oott123 2014-11-05 13:57:06 +08:00 via Android
这个速度真是吓的我虎躯一震…我随便连个MySQL查查数据库就50ms+了,三四毫秒简直太厉害…
|
17
lincanbin OP @oott123 合理利用索引,避免使用冗余度过高的开发框架,合理设计架构就能达到这个速度。
例如v2ex,分页时就没用上索引,你注意v2ex这一页的底部执行时间,明显就没有用上索引 http://v2ex.com/recent?p=5000 你再看看我写的sql语句: https://github.com/lincanbin/Carbon-Forum/blob/master/index.php 我的DBA经验全堆这上面了,当然,这里还有很多优化余地,以后架构定型再重构一次。 |
18
oott123 2014-11-05 14:47:37 +08:00
@lincanbin DBA 确实是很重要啊……
我仔细研究了下你的 SQL,似乎除了 `force index(LastTime)` 之外和我自己写的区别也不大的样子。 难道不 force 它就不会自己判断索引么?用不用 force 差距应该不大吧? |
19
lincanbin OP @oott123 是这句
SELECT * FROM '.$Prefix.'topics force index(LastTime) WHERE LastTime<=(SELECT LastTime FROM '.$Prefix.'topics ORDER BY LastTime DESC LIMIT '.($Page-1)*$Config['TopicsPerPage'].',1) and IsDel=0 ORDER BY LastTime DESC LIMIT '.$Config['TopicsPerPage' mysql的limit这样加入一个子查询,就能避免扫描页数少于当前页的列,这是limit的一个缺陷,我用子查询补上了 |
20
linfox 2014-11-05 14:58:19 +08:00
楼主,你在github上的carbon程序。
我可以下载下来自己搭建一个小论坛吗? |
21
lincanbin OP @linfox 当然可以,是Apache License。
不过建议再等一两个星期,这个目前只能算半成品,连自动化安装我都还没写。 |
24
kmvan 2014-11-05 15:05:04 +08:00
Processed in 0.753 ms, 1 SQL Queries
为啥1个sql查询量已经要700多毫秒呢。。。那如果;并发量10个人的话,不就打开页面要等7秒? |
27
kmvan 2014-11-05 15:06:57 +08:00
发现个经典问题,就是 margin 重叠问题。lz 的论坛设计中经常用到 margin 重叠,这个不好控制,容易出现意料不到的问题,不易于后续的维护和第三方插件开发啊。。
|
29
kmvan 2014-11-05 15:08:04 +08:00
|
30
lincanbin OP @kmvan 页面层次已经尽量少了,div嵌套差不多就两三层吧,比bootstrap少太多了,后期问题应该不会太大。
等差不多做出成品了,我再重构一次前端。 |
31
fkccp 2014-11-05 18:47:17 +08:00
哪家的vps啊速度这么快~~
|
32
lincanbin OP @fkccp 洛杉矶的一家VPS,好像只有一个人在管,256内存,512突发,1核心,HDD 硬盘,价格比DO 还便宜一些。
我觉得不怎么快,那家超售严重,还没SSD 。 快大概是因为我页面控制得足够小? |
33
kmvan 2014-11-05 19:25:58 +08:00
我下载后安装了,在二级目录下访问 http://xxxx/bbs/index.php ,报错
( ! ) Warning: include(layout.php): failed to open stream: No such file or directory in \bbs\common.php on line 101 $TemplatePath 是 null 值- - |
35
lincanbin OP @lincanbin 要放在二级目录,你要:
1. .htaccess里的RewriteBase /改为RewriteBase /bbs/ 2. MySQL carbon_config表,WebsitePath改为/bbs LoadJqueryUrl改为/bbs/static/js/jquery.js |
36
lincanbin OP @kmvan @ 错了
要放在二级目录的话,你要: 1. .htaccess里的RewriteBase /改为RewriteBase /bbs/ 2. 打开MySQL的carbon_config表,根: 将ConfigName为WebsitePath的那一行的ConfigValue改为/bbs 将ConfigName为LoadJquery的那一行的ConfigValue改为/bbs/static/js/jquery.js |
37
kmvan 2014-11-05 19:59:45 +08:00
话说我稍微认真看了一下论坛的源码,发现……
令我最惊叹的是,lz 居然能写出这么多层 if else 嵌套而不头晕!真心赞 不过可能是因为追求 TOP speed 的缘故吧,感觉程序没有插件或扩展机制,通用性和接口都不够强啊。 可能因为我是 wp 开发者,用 wp 的标准来看待了:) |
39
lincanbin OP @kmvan 还好是用PHP,要是用Python,没有原生的switch实现,那这种嵌套写起来就要蛋疼了
https://github.com/lincanbin/Carbon-Forum/blob/master/manage.php |
41
lincanbin OP |
43
lincanbin OP |
45
scyuns 2016-09-30 11:33:07 +08:00 via Android
佩服
|