如何开发一个网站

来源:互联网 发布:mac怎样安装字体 编辑:程序博客网 时间:2024/05/08 19:12

希望本篇文章对入门的朋友有所帮助 那么我写这篇文章的目的也就达到了

      如何开发一个网站? 开发语言不是问题 今天我们就以php为基础展开。

      一。开发环境:我们熟悉的lamp是当前的流行架构 即 LINUX+APACHE+MYSQL+PHP 入门的朋友把主要精力放在php与mysql上即可。

              对于php需要掌握的:基础语法 -----> 函数----->正则--------> 数组(数组我想特别强调一下 数组是很常用的很重要一定要打好基础 特别注意多维数组的使    用)-------->session和cookie(这个也是重中之重 http是无状态的 一个网站离开了用户毫无存在意义 需要掌握好这两个  后面我会详细介绍cookie与session原理以及应用)

------------>面向对象(这个重要性就不用我说了 非常重要 包括继承 接口 抽象类 魔术方法等 面向对象开发有很多好处 不仅可以使代码冗余度低更加可扩展 现在流行的php框架都是基础mvc面向对象开发的    希望大家都好好把这些弄明白  后面开发才能得心应手  后面我会详细介绍面向对象的使用以及如何设计一个框架)  我说的这些大家都需要花时间去弄明白 php这块你就可以   ,看来很少,  但是其中的东西还是不少,  希望大家多花些心思。

          对于mysql需要掌握的:增 删 改 查------->php与之连接的一些函数------->数据库表的设计-------->mysql存储引擎(各有哪些应用场景 后面我会专门写一篇关于存储引擎的博客)--------->索引(是什么 ?怎么用? 你们动手去查资料 印象会深刻)------>触发器------>存储过程------->游标的使用------->视图等等一些概念 后面我会专门写一篇介绍 刚入门只需要了解这些即可 但是基础的需要掌握与理解

     二。选择一个适合自己的开发框架  php框架近几年来层出不穷 当然其中不缺乏高性能的易用的框架  如kohana  zend framework  thinkphp  YII等等 只有适合自己的 没有最好的框架 当然你也可以自己开发  (使用这些框架需要你有面向对象基础)

    三。版本控制 svn 我们知道开发一个网站是大家协同开发的 这就需要一个版本控制的软件 来规范我们的代码  (动手去搜索一下svn 动手搭建一个试试 )

    四。 FTP服务器 用来发布我们代码 正式上线运行 (同样大家动手搭建一个)

    五。从这里我们进入业务方面:以一张图来表示 开发流程如图 具体开发流程按实际情况而定



六 。架构变迁

       刚开始我们的系统一般是把apache 与 mysql都放在一台机器上 随着流量的增大的话 我们一般会从优化入手  瓶颈一般都是在存储上语言本身不是什么大瓶颈 我们可以对数据库进行分库分表 (水平与垂直) mysql有自带的分区技术 后面我们详细介绍  我们简单改进后大致如图所示


这里有一个问题大家要注意  我们知道session是存在服务端的 一旦lvs轮询到不同的服务器上的时候session共享就成了一个问题  解决方案很多 我采取的把session做集中管理写到数据库中 这样的话就共享了session就保证了正常访问 还有一个问题就是登入会出现延迟 因为主服务器复制到从服务器的时候需要时间 正常情况下是很快的 有可能出现用户明明登入了 刷新页面后还是处于未登入状态 再刷新一下又登入了  这是因为主服务器复制到从服务器上了

七。设计原则 以下原则是我在工作中摸索出来自己觉得还是对自身帮助比较大的 与大家分享一下

    1 可控性:任何的功能一定要具备可控性 举个例子:当我们在设计开放接口的时候 我们需要设计对接账号的可以访问的接口  以及每一个接口在同一时间段内的调用次数等等这些都是需要做控制的 使我们的程序更加的灵活。

  2 可追朔性:任何的操作需要进行日志的记录 用来追溯历史 查问题 :比如谁在那个时间段操作了什么 浏览了什么等等此类的数据 我们统一记录 这样做不仅可以追查原因 还可以积累数据 为后期的数据挖掘做准备(有数据做什么都方便多了 后面我们还可以用来做策略等等)

3 可扩展性 :一个功能尽可能的可扩展 这就需要把一些共同的东西独立出来 后面去派生

八 。一些常用的设计思想

    1 异步:很多时候我们做事情不需要一次性做完 我们可以分批做 举个例子:一个用户注册完后 我们需要发送邮件让顾客激活 我们就可以把发邮件的事情交给异步去处理 

      设计的时候  我们可以在数据库中加入一条需要发邮件的账户信息  然后用异步脚本定时的跑就行了

  2   两个系统之间的对接也是我们很常见的  首先需要一种协议将二者连接起来比如phprpc 

  3 模块的分布式 :应用中我们需要进行模块的分拆 把一些大的繁琐的处理数据模块单独独立出来 通过中间件与消息机制进行通信 这样做的好处就是自身可以更加专注自己的功能 更加具有扩展性

九 。以上提到的一些概念 后期我会一一分享出来跟大家一起学习


0 0