Mar
3
其实我不是想说ob_start,而是解决一个nginx的proxy_cache问题。
我使用proxy_cache对根据页面头信息里的有效期和状态页面进行缓存。这个的性能还是很不多。交给php进行控制,而且不需要每个页面都创建。只是第一次访问时才生成缓存。
在长期的运行下,发现一个问题,如果程序在出现超时后,没有返回非200的状态(如500).还是返回200。这样就问题大了。本来proxy_cache就是靠状态来判断,在出错后还是返回200这样我如何是好呢?所以我就想到使用ob_start()进行缓存。但实际上这个是没有作用。
ob_start只是开通缓存的通道。如果出错问题,他还是会返回通道的内容数据,所以不会有影响,只是非正常退出,不返回数据而已。
另外ob_start开启的缓存通道可以多个开通。
所以ob_start不能解决状态问题。最后使用set_error_handler(),设置一个出错回显的函数。直接在函数中针对出错的函数。输出500的头信息。
好了这个就可以解决问题了。
那ob_start还要不要用?我想还是用吧。出错后就不要输出页面的内容了。因为内容未处理完。不如不输出。
<?php
ob_start()
set_error_handler('my_error_handler');
function my_error_handler($errno, $errmsg, $filename, $linenum, $vars){
header('HTTP/1.1 500 Internal Server Error');
}
$smarty = new Smarty();
$smarty->display();
我使用proxy_cache对根据页面头信息里的有效期和状态页面进行缓存。这个的性能还是很不多。交给php进行控制,而且不需要每个页面都创建。只是第一次访问时才生成缓存。
在长期的运行下,发现一个问题,如果程序在出现超时后,没有返回非200的状态(如500).还是返回200。这样就问题大了。本来proxy_cache就是靠状态来判断,在出错后还是返回200这样我如何是好呢?所以我就想到使用ob_start()进行缓存。但实际上这个是没有作用。
ob_start只是开通缓存的通道。如果出错问题,他还是会返回通道的内容数据,所以不会有影响,只是非正常退出,不返回数据而已。
另外ob_start开启的缓存通道可以多个开通。
所以ob_start不能解决状态问题。最后使用set_error_handler(),设置一个出错回显的函数。直接在函数中针对出错的函数。输出500的头信息。
好了这个就可以解决问题了。
那ob_start还要不要用?我想还是用吧。出错后就不要输出页面的内容了。因为内容未处理完。不如不输出。
<?php
ob_start()
set_error_handler('my_error_handler');
function my_error_handler($errno, $errmsg, $filename, $linenum, $vars){
header('HTTP/1.1 500 Internal Server Error');
}
$smarty = new Smarty();
$smarty->display();
Dec
31
老规矩,把去年的总结发上来《写在2013年的最后一天》
去年的计划是:
1,研究可用于销售的产品
2,读书计划定4本书,每个季度读一本不算过份。
3,山东大学的学习,这个不能拉下。
4,提高管理技巧和与人沟通的能力(这个有点头痛)
去年的计划是:
引用
1,研究可用于销售的产品
2,读书计划定4本书,每个季度读一本不算过份。
3,山东大学的学习,这个不能拉下。
4,提高管理技巧和与人沟通的能力(这个有点头痛)
Dec
12
在复习的空闲时间,访问了我博客上的友情链接。现在只有少数几个可以打开。
曾经火热的博客,代表着一代人想把自己的生活分享给其它人知道。到现在,已经寥寥无几的几个博客站。
以前有人我老婆问我为什么还要开着这个博客?当时我只回答因为我想开着。今天突然明白,不是我想开着,是因为这还是我曾经的记忆。我想保留着它。
这里确实留着我很多记忆,由我开始写程序,再到我毕业,工作,然后成家。
生活还在继续。
曾经火热的博客,代表着一代人想把自己的生活分享给其它人知道。到现在,已经寥寥无几的几个博客站。
以前有人我老婆问我为什么还要开着这个博客?当时我只回答因为我想开着。今天突然明白,不是我想开着,是因为这还是我曾经的记忆。我想保留着它。
这里确实留着我很多记忆,由我开始写程序,再到我毕业,工作,然后成家。
生活还在继续。
Dec
11
Nov
10
前段时间把服务器从ubuntu 12.04升级到14.04。
升级过程还是没有大问题,但升级完后发现很多程序没有自动启动。
特别常用的svn和httpd不知道怎么了,就是启动不了,就提示标题那句话。
应该是权限或者相关的配置上出错。后一直拖了好几天。今天总算解决了。原因很简单,因为使用了
/usr/sbin/nologin
正常应该是使用
/bin/false
centos使用
/usr/sbin/nologin
而ubuntu则使用
/bin/false
升级过程还是没有大问题,但升级完后发现很多程序没有自动启动。
特别常用的svn和httpd不知道怎么了,就是启动不了,就提示标题那句话。
应该是权限或者相关的配置上出错。后一直拖了好几天。今天总算解决了。原因很简单,因为使用了
/usr/sbin/nologin
正常应该是使用
/bin/false
centos使用
/usr/sbin/nologin
而ubuntu则使用
/bin/false