关闭Apache的错误日志errorlog
由于各种原因吧,会导致Apache的错误日志越来越大,但是,在项目上如果一直增加下去可能会占满磁盘。所以,我计划关闭errorlog功能,但是通过注释掉ErrorLog这个配置参数,重启Apache后仍然有日志生成。发现这个不起作用。现在改成这样的配置ErrorLog "nul",再重启就不会生成日志了,服务器是Windows系统。
nul相当于Linux系统里面的/dev/null
由于各种原因吧,会导致Apache的错误日志越来越大,但是,在项目上如果一直增加下去可能会占满磁盘。所以,我计划关闭errorlog功能,但是通过注释掉ErrorLog这个配置参数,重启Apache后仍然有日志生成。发现这个不起作用。现在改成这样的配置ErrorLog "nul",再重启就不会生成日志了,服务器是Windows系统。
nul相当于Linux系统里面的/dev/null
在项目上有些客户要求在显示患者姓名的时候,需要把姓名中间的字用*号替代,如果是两个字的把第二个字用*号替代,如果三个字或者三个字以上的姓名,就把中间的全部用*号替代。对于这个需求,前前后后做了三个方案,最后一个方案是比较合适的,其他两种方案都有弊端。
方案一
$PatientName = "张三"; $tag = mb_substr($PatientName,1,1,'UTF-8'); $PatientName = str_replace($tag,"*",$PatientName);
这个方案有两个缺点
缺点1,只能把患者姓名的第二个字用*号替代,如果患者是少数民族或者复姓的,那么他们的姓名可能有好几个字,例如:欧阳明波会替换成欧*明波。这个是不符合需求的。
缺点2,如果患者姓名三个字的,第二个和第三个字是一样的,就会把后面两个字全部替换成*号了。例如:李萌萌就会替换成李**,这样也不符合需求。
方案二,
这个方案有1个缺点,那就是如果姓名只有两个字,就不会替换任何内容了。
方案三
这个方案就是比较完美的了,不管患者姓名是几个字组成的,都可以把中间的全部替换成*号,如果是两个字的就好吧第二个字替换成*号。姓名是三个字的,后两个字是重叠的,也只会把中间的字替换成*号。
最近在解决一个项目现场问题的时候,我发现管理后台访问特别卡顿,几乎无法访问。首先说明一下,我们的管理后台是Apache+PHP+MySQL架构的。当我打开任务管理器的时候,看到httpd进程占用CPU只有不到10左右,就会影响到整个系统的正常使用了。这个现象很奇怪,我也是第一次遇到过。像其他项目上,并发高峰期httpd进程可能会占用CPU到50%~70%左右,但是,后台仍然是可以正常访问的。由此推断,这个可能和服务器的配置有关系,也和Apache对服务器资源的占用有关系,具体是什么关系,可能牵扯到的知识太多了,我也不可能全部掌握,再者说,项目出现问题了,我就要立刻解决掉,恢复正常使用。
既然CPU还有很多的资源可以使用,那么我就可以多创建几个Apache的进程做负载均衡来分摊这个并发压力。具体实现方法是,利用Nginx的反向代理模式把请求均匀地分配给三个Apache的服务。也就是说,Nginx作为请求的入口,它不做任何的逻辑处理,只是负责把请求分发给后端的Apache处理。
Nginx的关键配置代码截图如下所示
配置完成以后,刷新一下后台,也可以正常访问,在数据请求的高峰期可以看到三个Apache的进程都在处理请求。如图所示
这样三个Apache进程分摊了所有的请求,这个时候再刷新一下管理后台,发现很快就可以获取到数据。的确比之前一个进程访问的后台要快很多。
GitHub上面有很多好的代码,对于很多程序员来说有很大的吸引力。但是,有些代码在下载的过程中速度特别慢,有些就直接下载失败。如何解决这个问题,具体做法就是通过gitee中转一下。然后,我们再从gitee去下载就可以了,如图所示。