php广告系统优化感想

广告系统优化感想

这几个月独自完成了处理接近500万会员的广告系统。

此广告系统不是一般的静态广告,而是每个广告都是个性化的,什么叫个性化,也就是根据每个人的特征投放不同的广告。广告处数不多,但是有些还是有点复杂的。

例如登陆弹窗,登陆弹窗里面的信息是好几个库里面的综合信息,业务都是分离的,这意味着每个人每次登陆要获取的广告要取比较多的信息,而且信息量还不少。

 

先说这次设计上不足的地方,这是我在这次设计上自己意识不足导致的:

1.   没有意识到多处广告都是在登陆的时候可以一次性获取的,所以,不应该分开了多次请求进行获取,这样子会加大请求数量,增加服务器压力,而应该一次性把此会员的所有广告返回,这样子减少了四五个请求量。

2.   大数据量的缓存不应该使用文件缓存,而应该使用内存缓存。而且内存缓存也应该设计过数据结构以后再进行存储,这样子可以有效的减少逻辑处理时间,增加php速度

3.   广告上线以后,有这几个bug都是因为0或者空array导致不停请求数据库,导致服务器挂掉,这是我自己的不慎导致的,要为这个负全责,幸好最后自己能够找出问题。

4.   没有充分利用已有资源,导致很多基础的东西需要自己重新实现,增加开发时间,以及性能问题

 

这次使用的服务器配置主要是:

一台Redis+一台php和mysql服务器

 

编码方式:

Oo

 

分类方式:

按模块划分,这样子我觉得可以灵活删除模块或者增加模块,不过一位长者认为这个不好,导致文件比较零散。

底层框架:

自己搭建了一个比较简单的框架(是否好,有待斟酌)

 

数据结构:

1.   以前的业务不能动,所以以前的业务数据都是固定的,只能通过自己转换数据格式,并使用自己方式自己存储。

2.   广告的数据都生成了php文件数据缓存,没有压力。可以考虑放到memcache里去。

 

缓存方式:

1.   会员信息:redis缓存

2.   广告数据:php数据原始缓存

3.   处理后,根据每个依据条件得到的逻辑缓存

4.   html缓存

 

瓶颈:

登陆弹窗,获取信息比较多,多个业务都是分开的,一个功能要去好几处的数据,所以使用了redis缓存

判断逻辑多,由于是个性化的,每个广告都要进行判断是否进行匹配,才给会员显示,所以后来加了逻辑缓存,以及html缓存。

 

 

 

项目后总结:

1.   一定要充分利用已有资源,减少自己开发压力,以及性能瓶颈

2.   优化不容易,每个小的点都有可能在大并发量下是致命的。

3.   项目最好能够在压力测试后才上线。

4.   需求一定要经过认真分析,自己能力是否可以达到才接,不要盲目的接需求。有时候,为了性能,可以牺牲一些需求。

5.   设计一定要充足才编码,不要盲目进行编码。

6.   写架构需要考虑很多东西,不然,很有可能导致全架构重写。

7.   Oo编程,在php里面最好使用apc,如果文件引入多,可以减少4~6%的cpu

8.   缓存最好不要使用过期时间,如果使用过期时间就失去了缓存了意义了。但是用不用过期时间还是根据需求而定的。

9.   不要盲目用函数,我这次项目就存在盲目使用intval和trim的情况了,虽然说这两个函数开销不算大,但是对于大并发量来说,每个小细节都可能达到神奇效果。

 

最后讲讲php的几个架构优化(借用别人的思路):

1.   前端优化,减少http请求量,例如js,css,小图(使用yslow分析一下)

2.   Mysql设计结构优化,语句逻辑优化,每句语句最好先explain一下,分析效率如何

3.   Php程序逻辑优化

4.   Html缓存,cms常用模式

5.   使用memcache、redis等缓存,并合理设计缓存结构

6.   使用php文件缓存,但需要注意io操作比较慢

7.   Apc,xcache等编码缓存

8.   实在没有优化余力了,减少前端视觉等待(例如增加响应前时间或减少响应后时间)

 

最后感想:

这次项目优化大体上完成了;

总的来说,这次项目对我来说还是有点挑战,出了几次问题导致总监都怒了,但是幸好最后发现把问题发现并解决掉了,这点我深深地表达歉意。

然后这次也让自己成长了,明白了好多技术上的,项目上的,公司上的,自己从未接触过的东西,也把自己懵懂纯真的思想现实化,了解了很多无可奈何的现实。

这次项目改了3次,几乎是整个代码重构,对于我这种有点代码完美主义的,还是觉得很必要的,每次重构都是一种进步,这个也让自己学到很多,感谢yx。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PHPADM网络广告管理系统V4.0 功能介绍: (1)真正意义的数据安全:核心系统及组件全部安装在网站自有服务器上,不必分享数据给软件提供商。并且系统采用MVC结构开发单入口模式,对请求链接进行严格控制。 (2)系统灵活配置:根据网站流量规模,为系统配置相应服务器及环境,可以逐步升级,以节省资源;并根据 运营需要选择性安装全部或者部分组件。同时提供API接口,网站可以根据业务扩展和管理需要与公司CRM、OA等系统对接,进行二次开发满足多指向管理需求。 (3)稳定的跨平台应用能力:采用MVC结构,结合优良的java开发语言,使得系统结构清晰、稳定;并且由于其所依赖的性能很好的web服务软件和以高速著称的数据库软件在Linux和Windows平台上均能运行,因此具有跨平台功能,它的代码不用做修改就可以直接运行在两个不同的操作系统中。 (4)多层及多维广告管理:对于拥有多家子网站的用户来说,在灵狐广告系统中可以很方便建立多个网站并集中管理;并支持从订单和网站两个维度来进行广告位设置、排期、监测等管理功能。 (5)简便的排期预订功能:排期表以日历表模式设定每天投放明细,也可批量分配,达到所见即所得的投放排期效果,将复杂繁琐的广告排期工作变得简单快捷。 (6)生动直观的各类报表:对于广告物料的使用情况和相关流量数据,不仅有详细的数据报表,还可以自动组合关联数据形成各种 柱形、点状、折线等直观图表,方便用户查看。 (7)向导式管理界面:网络广告管理系统从用户的角度出发进行设计,采用创新的向导式广告管理界面,具有简单易用的显著特点。同时系统管理端和客户端均可以支持多种语言,这样给予了客户最大的方便。 (8)稳定的访问速度:系统采用负载均衡的结构体系设计,只要硬件、宽带资源充足,可满足任何规模的网络广告宣传服务,前台采用Memcached用于提升系统访问速度,Memcached将数据库负载大幅度降低,以及图片、广告代码、统计代码服务器分离(Squid缓存配合使用效果更好),后台支持MYSQL的Master/Slave数据同步配置,减轻服务器压力,有效提高服务器的负载能力,以达到高流量的负载均衡,更好的分配资源,更快速访问。 (9)多元化广告样式:支持CPC(点击)CPM(弹窗)CPA(引导注册)CPS(销售分成)CPV(富媒体)等广告类型,广告的发布样式支持图片/FLASH广告、文字广告(主题)、弹窗、HTML自定义、对联、飘浮等等样式,后台自由发布广告显示样式,只要想的到没有做不到的。 (10)完善的服务体系:提供系统升级、二次开发支持、增值组件定制、分支机构响应及广告运营培训等多项服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zqzhr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值