我正在建立一个大型网站,并希望将其扩展。我最近阅读了一篇由经验丰富的高负载项目开发人员(Oleg Bunin)撰写的文章,并指出:
Highload应用程序必须分为三个部分:
1)前端(HTML,CSS,JS,图像)
2)后端(服务器端:使用PHP,Python的繁重计算任务 或其他服务器端语言)
3)数据库
在这种情况下,应用程序将能够承受巨大的流量。
此外,文章还指出SQL
查询必须放在应用程序的一个位置。
我正在使用PHP5 OOP和MySQL数据库。 我的解决方案:
1)我将所有SQL查询都放入了类中。
2)我使用PHP PDO包装到数据库层类中。
3)每个类都使用Database Layer对象初始化,并使用它来运行SQL查询。
示例:
// On the public accessible page
$DBH = new RwtDatabaseLayer(['messages']); # database name
$msgs = new GetMessages($DBH);
在我的GetMessages
课程中:
class GetMessages
{
private $_DBH;
function __construct($DBH)
{
$this->_DBH = $DBH;
}
function get_messages()
{
$this->_DBH->run(QUERY HERE); // `run` is Database Layer method
}
}
因此,我的公共可访问页面上的代码不包含任何SQL查询。
我这样做了吗?
答案 0 :(得分:2)
如果您希望能够处理大量流量,则应尝试将缓存合并到您的程序中。从这个意义上说,在专门的类中拥有所有查询将帮助您围绕它们构建缓存。静态内容(html,css)也是如此,它可以被压缩/缓存或来自不同的服务器(或自定义CDN)。
我建议看一下memcache(以及加速器,如APC)
答案 1 :(得分:0)
我强烈建议您阅读许多主要框架使用的模型视图控制器设计模式,然后至少学习其中一个主要框架,Zend Framework 2和Symfony 2将是很好的起点。在尝试创建“巨大流量”网站之前,你真的需要了解技术和设计原则