高级Web开发教程

时间:2009-06-22 23:09:30

标签: php mysql database-design

虽然我能找到几乎所有关于PHP + MySQL开发的具体问题的答案,但我找不到的一个资源是良好解决高级问题的方法。

我想实现一个可以通过AJAX查询的次要留言板类型系统,但我有太多的规范要由预构建的库填充,我不需要有关如何实现和使用的教程数据库。

我正在寻找的是一种资源,它为高级用户提供了比“存储消息和打印最后10条消息”式教程更复杂的问题的良好解决方案。

例如:我的网站将拥有每个用户数量不同的组页面,私人组页面将有一个小的“墙”式留言板。在设计这个特定的表时我应该考虑什么?我该如何实现锁定?等

当然,我不希望有关于我的确切问题的教程,但我想要一个可以理解的数据库驱动的网站的完整解决方案(不像WordPress - 有点太分散)和这实际上是有效的(不像你有时在参考书后面找到的完整解决方案)。

2 个答案:

答案 0 :(得分:3)

你会发现你提到的所有事情(可能都是“高级问题”)都是一系列相当简单的方法和技术,它们以深思熟虑的方式结合在一起。

锁定表以防止多个用户同时编辑是一个相当简单的问题。这里有issue of locking has been addressed多次。

至于将成员分配给组,这只是几个表之间的人与人之间的关系。您将拥有“用户表”,“组表”和“用户到组”表。这假设用户可以属于多个组。

通过在查询中执行几个小连接,您可以从不同的用户获取特定组的帖子 - 从而填充特定于组的板。此外,您可以通过请求该组中存在的用户私有化该板,以便读取该板 - 这只是对Users-to-Groups表的快速查询,以查看该UserID是否与该GroupID一起存在。

答案 1 :(得分:3)

我是.net的家伙,所以我会保持通用是我的解决方案。我不认为您需要的解决方案是语言特定的任何方式。您需要关注的是设计模式和执行某些事情的企业方法。成功的关键不是(完全)通过数据库实现,而是使用数据的方式和方式。要扩展,您需要能够快速写入(写入队列而不是数据库)并快速读取(尽可能从缓存层读取而不是数据库)并快速搜索(从Lucene索引而不是数据库中搜索) )。许多人都挂在数据库上,他们通常都是正确的。它是应用程序数据存储和查询的核心部分。但它通常也是任何系统中最大的瓶颈之一。当然,将所有数据存储到数据库,只是不要直接执行。当然,从数据库中读取和查询数据...但仅在绝对必要时(使用索引查找数据,然后只读取数据库中的数据)。

当您的应用程序使用外部服务时也是如此。以发送电子邮件为例。而不是通过连接到SMTP服务器并打包和发送电子邮件来发送电子邮件...将消息粘贴到队列中并创建队列读取器以通过SMTP连接并发送电子邮件。这样您的网络应用程序就能继续顺利运行。

成功的关键是以绩效为导向的研究和良好的建筑设计。查找域驱动设计,控制反转,测试驱动开发,存储库模式,模型视图控制器,memcached,速度,队列,MSMQ,数据库邮件队列等内容。