论一个PHP项目上线的注意点
一、后端问题
- 服务器配置要跟上流量
- 预估QPS时要给足未知流量的空间
- 后端数据库设计要根据项目大小来相对应,小型流量单表就可以,但是中大型要分库分表
- 在处理执行修改的操作时一定要多一层判断(判断是否已经被修改)
- 第三方文档问题一定要注意几个点,每个传入参数的意思,每个接口调用是否有限制,要看清楚每一个接口的调用限制
- 资源问题,本项目有一个上传图片,当时直接上传到服务器,并没有上传到OSS服务器,项目加载资源慢,用户一多导致服务内存满了
- 日志问题,因为没有关闭DEBUG导致一直在存日志,最后服务器内存满了,项目打不开
- Redis缓存问题,因为缓存里面的数据没有在数据库保存,导致当时想升级Redis都不敢升,一旦缓存数据丢失就会出问题
- 抽奖代码中,概率问题!
二、前端问题
- 上传红运值,没有判断就直接跳转到结果。导致用户图片可能没上传成功就到了,二次进入就会显示空白,别的用户
- 上传图片很大几率出现没有调用上传接口,
- 分享地址是直接window.localtion.href 获取的,这样会导致用户分享的参数也会带出去,从而导致用户从该地址进入,是进入分享人的结果页,因为参数是分享人的
- 个人认为生成海报这个地方有问题,上传红运值和头像的时候不应该就生成海报图,个人结果页的地方前端需要的参数,后端都返回了,但是前端这个地方是直接用的生成海报图片,根据层级关系覆盖的。
- 缓存很严重,注意更新版本号
论一个PHP项目上线的注意点的更多相关文章
- 前端工程模块化——以一个php项目为例
实现一个页面功能总是需要 JavaScript.CSS 和 Template 三种语言相互组织,所以我们真正需要的是一种可以将 JavaScript.CSS 和 Template 同时都考虑进去的模块 ...
- iOS项目在非测试设备上的安装方法(项目上线前)
转载自:http://blog.csdn.net/ai379558502/article/details/49003383 方法一: 这个办法,其实是国外一个创业项目 TestFlight,面向移动应 ...
- Linux 项目上线管理 MAVEN + expect 一台机器管理所有机器的应用程序
一.目的 在一台服务器上面管理所有机器的应用程序. 设想是通过一条命令能够知道所有应用程序是否running 如果not running 查看具体项目的log 跟踪具体原因,程序问题汇报相关负责人 二 ...
- django项目上线环境部署
django项目上线环境部署 第一步 安装python虚拟环境 1 安装虚拟环境virtualenv 2 安装virtualenvwrapper工具 3 确认virtualenvwrapper.sh脚 ...
- 项目上线后出现Bug,该如何处理?
项目在上线之后又出现了Bug,这让很多测试人员和开发人员头痛.但很多时候线上Bug普遍地存在,不可避免. 任何项目都存在未发现 Bug 和 已发现 Bug 两种情况,不存在没有 Bug的情况. 即 ...
- 发布一个Django项目
一.部署环境准备,准备python3和虚拟环境解释器,virtualenvwrapper 1.修改python3的环境变量 PATH=/opt/python36/bin:/usr/local/sbin ...
- 9.第一个vue-cli项目
1.什么是vue-cli vue-cli 官方提供的一个脚手架,用于快速生成一个 vue 的项目模板; 预先定义好的目录结构及基础代码,就好比咱们在创建 Maven 项目时可以选择创建一个骨架项目,这 ...
- Yum项目上线实战 (网站运维)-Linux从入门到精通第十一天(非原创)
文章大纲 一.编译安装与卸载Nginx二.关于LAMP三.LAMP环境部署四.学习资料下载五.参考文章 一.编译安装与卸载Nginx Nginx:是一款比较流行的web服务器软件,类似于Apach ...
- java项目上线的流程(将web项目部署到公网)
本博文来源于网络,原文的地址在本篇博文最下方. 如何将java web项目上线/部署到公网 关于如何将Java Web上线,部署到公网,让全世界的人都可以访问的问题.小编将作出系列化,完整的流程介绍. ...
随机推荐
- 【软件安装】——Robot Framework
Robot Framework安装(win10) 一. 安装python 1.安装python2.7到本地,双击安装包进行安装,一般放入D盘,文件名默认Python27: 安装完成后进行版本检验,调出 ...
- qtp的三种录制模式(转)
QTP提供三种不同的录制方式:正常录制(Normal Recording).模拟录制(Analog Recording)和低级录制(Low Level Recording). 1.正常录制(Norma ...
- LR 场景设置
LR 场景设置group:多个脚本按照独立设置模式跑,各个脚本可以单独设置虚拟用户.运行时间scenario:多个脚本之间按照相同模式跑,将总的虚拟用户数按照一定比例分配给各个脚本 schedule ...
- python函数装饰器详解
python装饰器(fuctional decorators)简单来说就是修改其他函数的函数. 这样的函数需要满足两个个条件: 1.不能修改原函数的源代码 2.不能改变原函数的调用方式 需要达到的效果 ...
- 用C语言给指定的内存地址赋值(通过指针)
这两天找工作,做面试题的时候,碰到这样的题:指定了一个地址,比如说0x0012ff7c这样一个地址,要求是给这个指定的地址赋一个确定的值,比如说100,当时就是一个郁闷啊,在汇编里这样用过,在c中还真 ...
- object of type 'Response' has no len()
看见没,这里括号弄错了! 网上解释是requests.get()得到的是一个response对象,无法用BeautifulSoup解析,如果要解析,解析对象应该是requests.get().cont ...
- 50.Maximal Square(最大正方形)
Level Medium 题目描述: Given a 2D binary matrix filled with 0's and 1's, find the largest square conta ...
- Javascript基础三(函数)
函数第一节: 1.函数的概念及作用 函数是由事件驱动的或者当他被调用时可执行的可重复使用的代码块. 具备一点功能的代码段,代码段来实现具体的功能.要想实现一个函数的功能需要对函数进行调用. ...
- 【转载】Elasticsearch--java操作之QueryBuilders构建搜索Query
原文地址:https://www.cnblogs.com/pypua/articles/9459941.html package com.elasticsearch; import org.elast ...
- Tornado框架的简单使用
一.Tornado Web应用程序的结构 import tornado.web class LoginHandler(tornado.web.RequestHandler): def get(self ...