背景:nginx 请求php的9000端口也是一个问题,nginx就是客户端,实践发现类似shell 正常返回0,错误返回1,fastcgi的php也是一样,php有一个队列,backlog =sysctl_somaxconn; //也就是说当backlog=-1时,在内核中backlog被赋值为/proc/sys/net/core/somaxconn 的值,本机上为262144,性能差是由于php-fpm backlog参数设置为-1,导致fpm没能及时取出完成连接队列的socket,出现SYN 超时,最终导致压不上去,表现出性能差。
所以安装php-fpm时backlog一定要重新设置,不能用fpm默认配置的-1 ,可以根据机器的并发量来设置,建议设置在1024以上,最好是2的幂值(因为内核会调整成2的n次幂)。而只要这个backlog满了nginx还向php发请求就会返回503,即拒绝客户端的连接。
502 Bad Gateway(处理超过php的设置时间,并不是执行错误,执行错误是500)
The server was acting as a gateway or proxy and received an invalid response from the upstream server.
503 Service Unavailable(PHP的队列backlog满了还来请求如队列被拒绝的状态码)
The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.
504 Gateway Time-out
The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.
more:https://m.zyku.net/nginx/1753.html
ngx_http_limit_req_module 模块,这个可以限制每秒的请求,超过就返回 503 错误码。
是用共享内存实现的:http://www.cnblogs.com/fll369/archive/2012/11/26/2789572.html
2012.1.7 更新
编译的时候推荐使用nginx-1.0以上版本,不要加--with-debug参数编译,(感谢agentzh指出)。
hashdos这个事,严格意义上不是各种语言的错了(不过perl的确处理得很好),但是用nginx来擦屁股要干净些。
借鉴tomcat的作法,实现了下面这个nginx-http-hashdos-module,通过设置hashdos(默认on)的开关和body_max_count(默认值1000),对nginx后面的服务进行安全防护,相比对php或者java进行patch,这或许是最好的办法了。
nginx-http-hashdos-module项目地址
https://github.com/54chen/nginx-http-hashdos-module
如何使用
1.下载zip后保存到一个目录,如~/nginx-http-hashdos-module。
2.cd nginx-1.0.9/
3.重新编译和安装nginx
./configure --prefix=/opt/soft/nginx --with-pcre --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --add-module=/path_to/nginx-http-hashdos-module/ && make && make install
4.配置打开:
hashdos on;
body_max_count 1000;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /opt/soft/nginx/conf/fastcgi_params;
client_body_buffer_size 2m;
client_max_body_size 2m;
}
注意事项
因为计算参数都在内存中进行,所以client_body_buffer_size 与 client_max_body_size 的值一定要相等。推荐2m。
TODO
改进in-file时的post分析。
原理
介于微博上有网友对此文扫一眼之后以为是简单通过client_body_buffer_size和client_max_body_size来做的判断,特加此节。
nginx-reqeust-body在接到请求时,根据header中的声明,判断是保存在内存还是在硬盘中,当大小超过两个buf和client_body_buffer_size大小时,会写入临时文件。
防止hashdos的终极目标是filter用户的输入,所以对用户的输入参数数量进行计数。超过1000(body_max_count的默认数量)时,返回一个413给攻击者。希望不要再渔到各种高级工程师。
参考:http://www.54chen.com/_linux_/nginx-hashdos-help.html
nginx 防止小型ddos攻击
所以安装php-fpm时backlog一定要重新设置,不能用fpm默认配置的-1 ,可以根据机器的并发量来设置,建议设置在1024以上,最好是2的幂值(因为内核会调整成2的n次幂)。而只要这个backlog满了nginx还向php发请求就会返回503,即拒绝客户端的连接。
502 Bad Gateway(处理超过php的设置时间,并不是执行错误,执行错误是500)
The server was acting as a gateway or proxy and received an invalid response from the upstream server.
503 Service Unavailable(PHP的队列backlog满了还来请求如队列被拒绝的状态码)
The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.
504 Gateway Time-out
The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.
more:https://m.zyku.net/nginx/1753.html
ngx_http_limit_req_module 模块,这个可以限制每秒的请求,超过就返回 503 错误码。
是用共享内存实现的:http://www.cnblogs.com/fll369/archive/2012/11/26/2789572.html
2012.1.7 更新
编译的时候推荐使用nginx-1.0以上版本,不要加--with-debug参数编译,(感谢agentzh指出)。
hashdos这个事,严格意义上不是各种语言的错了(不过perl的确处理得很好),但是用nginx来擦屁股要干净些。
借鉴tomcat的作法,实现了下面这个nginx-http-hashdos-module,通过设置hashdos(默认on)的开关和body_max_count(默认值1000),对nginx后面的服务进行安全防护,相比对php或者java进行patch,这或许是最好的办法了。
nginx-http-hashdos-module项目地址
https://github.com/54chen/nginx-http-hashdos-module
如何使用
1.下载zip后保存到一个目录,如~/nginx-http-hashdos-module。
2.cd nginx-1.0.9/
3.重新编译和安装nginx
./configure --prefix=/opt/soft/nginx --with-pcre --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --add-module=/path_to/nginx-http-hashdos-module/ && make && make install
4.配置打开:
hashdos on;
body_max_count 1000;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /opt/soft/nginx/conf/fastcgi_params;
client_body_buffer_size 2m;
client_max_body_size 2m;
}
注意事项
因为计算参数都在内存中进行,所以client_body_buffer_size 与 client_max_body_size 的值一定要相等。推荐2m。
TODO
改进in-file时的post分析。
原理
介于微博上有网友对此文扫一眼之后以为是简单通过client_body_buffer_size和client_max_body_size来做的判断,特加此节。
nginx-reqeust-body在接到请求时,根据header中的声明,判断是保存在内存还是在硬盘中,当大小超过两个buf和client_body_buffer_size大小时,会写入临时文件。
防止hashdos的终极目标是filter用户的输入,所以对用户的输入参数数量进行计数。超过1000(body_max_count的默认数量)时,返回一个413给攻击者。希望不要再渔到各种高级工程师。
参考:http://www.54chen.com/_linux_/nginx-hashdos-help.html
nginx 防止小型ddos攻击
linux 启动ftp服务,sftp服务
Unix/LinuxC技术 jackxiang 2012-6-12 20:51
启动ftp服务:
在/etc/rc.d/init.d/目录下:命令 service vsftp start
启动ssh服务,sftp服务
在/etc/init.d/目录下: 命令 /etc/init.d/sshd start 注意这里需要在绝对路径下执行sshd start
开启root可以通过ftp软件连接的功能:
默认有一些用户是不能通过ftp连接服务器的,比如root。如果需要开启这些用户,就需要做一些修改才可以。
(1)编辑/etc/vsftp/ftpusers文件,去掉里面root一行
这个文件里存放的是被禁止的登录名
(2)编辑/etc/vsftp/user_list文件,去掉里面root一行
说明:当文件/etc/vsftpd/vsftpd.conf中userlist_deny=YES时
文件user_list和ftpusers中的登录名列表被禁止
具体查看ftpusers,user_list文件的注释
在/etc/rc.d/init.d/目录下:命令 service vsftp start
启动ssh服务,sftp服务
在/etc/init.d/目录下: 命令 /etc/init.d/sshd start 注意这里需要在绝对路径下执行sshd start
开启root可以通过ftp软件连接的功能:
默认有一些用户是不能通过ftp连接服务器的,比如root。如果需要开启这些用户,就需要做一些修改才可以。
(1)编辑/etc/vsftp/ftpusers文件,去掉里面root一行
这个文件里存放的是被禁止的登录名
(2)编辑/etc/vsftp/user_list文件,去掉里面root一行
说明:当文件/etc/vsftpd/vsftpd.conf中userlist_deny=YES时
文件user_list和ftpusers中的登录名列表被禁止
具体查看ftpusers,user_list文件的注释
zend studio9.0.3常见问题解答
Php/Js/Shell/Go jackxiang 2012-6-12 20:36
10.zendstudio如何进行两个文件的比较?
选中你要比较的两个文件,右键点击,在弹出来的菜单中选取Compare With -> Each Other,这时会开启一个比较编辑器,就可以进行两个文件的比较了。(右上角的几个比较按钮自行测试它的功能)
11.新建PHP文件时怎么缺少后面的?>,如何补全?
选择window菜单->Preferences->PHP->Code Style->Code Templates,在右测点Code,选择“Simple php file” 点“Edit...”进行编辑增加?>,这样新建文件时就有后面的?>。
12.zend studio9在线汉化没有成功,有汉化离线包没?
还是在线汉化吧,经测试离线汉化包有问题,已不提供了。
来源:http://www.geekso.com/zendstudioquestion/
阅读全文
选中你要比较的两个文件,右键点击,在弹出来的菜单中选取Compare With -> Each Other,这时会开启一个比较编辑器,就可以进行两个文件的比较了。(右上角的几个比较按钮自行测试它的功能)
11.新建PHP文件时怎么缺少后面的?>,如何补全?
选择window菜单->Preferences->PHP->Code Style->Code Templates,在右测点Code,选择“Simple php file” 点“Edit...”进行编辑增加?>,这样新建文件时就有后面的?>。
12.zend studio9在线汉化没有成功,有汉化离线包没?
还是在线汉化吧,经测试离线汉化包有问题,已不提供了。
来源:http://www.geekso.com/zendstudioquestion/
阅读全文
现在QQ升级到2012版,怎么可以让以前的QQ版本中添加的QQ表情恢复。
点击主菜单选择系统设置--基本设置--文件管理 点击打开个人文件夹 关闭qq(必须) 剪切CustomFace.db和CustomFace.dbc两个文件到其他非qq系统的文件夹 登陆qq 点击主菜单--工具--数据导入工具 选择自定义表情 选择从指定文件导入 然后导入 完成
我的实践过程如下:比如我的重新换电脑时备份到F盘了:
F:\本地磁盘D盘\Program Files\Tencent\QQ\Users\372647693 找到下面的:
customface.db customface.dbc 两个文件,后拷贝到一个桌面的新的文件夹里。
后:
点击主菜单选择系统设置--基本设置--文件管理 点击打开个人文件夹 关闭qq(不用),剪切CustomFace.db和CustomFace.dbc两个文件到其他非qq系统的文件夹即可。后面在发表情时就可以看到以前那些各种搞怪的图片了。By:jack整理。
点击主菜单选择系统设置--基本设置--文件管理 点击打开个人文件夹 关闭qq(必须) 剪切CustomFace.db和CustomFace.dbc两个文件到其他非qq系统的文件夹 登陆qq 点击主菜单--工具--数据导入工具 选择自定义表情 选择从指定文件导入 然后导入 完成
我的实践过程如下:比如我的重新换电脑时备份到F盘了:
F:\本地磁盘D盘\Program Files\Tencent\QQ\Users\372647693 找到下面的:
customface.db customface.dbc 两个文件,后拷贝到一个桌面的新的文件夹里。
后:
点击主菜单选择系统设置--基本设置--文件管理 点击打开个人文件夹 关闭qq(不用),剪切CustomFace.db和CustomFace.dbc两个文件到其他非qq系统的文件夹即可。后面在发表情时就可以看到以前那些各种搞怪的图片了。By:jack整理。
Linux的install命令
Unix/LinuxC技术 jackxiang 2012-6-6 18:50
【概述】
Install和cp类似,都可以将文件/目录拷贝到指定的地点。但是,install允许你控制目标文件的属性。install通常用于程序的makefile,使用它来将程序拷贝到目标(安装)目录。
【语法】
install [OPTION]... [-T] SOURCE DEST
install [OPTION]... SOURCE... DIRECTORY
install [OPTION]... -t DIRECTORY SOURCE...
install [OPTION]... -d DIRECTORY...
*如果指定了两个文件名, `install' 将第一个文件拷贝到第二个
* 如果使用了 `--target-directory' (`-t') 选项,或者如果最后一个文件是一个目录并且没有使用`--no-target-directory' (`-T')选项, `install'将每一个源文件拷贝到指定的目录,目标文件名与SOURCE文件名相同。
* 如果使用了 `--directory' (`-d') 选项, `install' 将逐级创建缺失的目标目录
【常用选项】
-s:对待拷贝的可执行文件进行strip操作,取出文件中的符号表。(一般在做成nand rom时去除符号表,NFS时为了调试方便,一般不会使用此选项)
-d(--directory):创建制定的目录结构(逐级创建)。如,指定安装位置为/usr/local/aaa/bbb,/usr/loacal已存在,install会帮助我们创建aaa和bbb目录,并把程序安装到指定位置。
来自:http://www.cnblogs.com/wwwsinagogogo/archive/2011/08/15/2139124.html
Install和cp类似,都可以将文件/目录拷贝到指定的地点。但是,install允许你控制目标文件的属性。install通常用于程序的makefile,使用它来将程序拷贝到目标(安装)目录。
【语法】
install [OPTION]... [-T] SOURCE DEST
install [OPTION]... SOURCE... DIRECTORY
install [OPTION]... -t DIRECTORY SOURCE...
install [OPTION]... -d DIRECTORY...
*如果指定了两个文件名, `install' 将第一个文件拷贝到第二个
* 如果使用了 `--target-directory' (`-t') 选项,或者如果最后一个文件是一个目录并且没有使用`--no-target-directory' (`-T')选项, `install'将每一个源文件拷贝到指定的目录,目标文件名与SOURCE文件名相同。
* 如果使用了 `--directory' (`-d') 选项, `install' 将逐级创建缺失的目标目录
【常用选项】
-s:对待拷贝的可执行文件进行strip操作,取出文件中的符号表。(一般在做成nand rom时去除符号表,NFS时为了调试方便,一般不会使用此选项)
-d(--directory):创建制定的目录结构(逐级创建)。如,指定安装位置为/usr/local/aaa/bbb,/usr/loacal已存在,install会帮助我们创建aaa和bbb目录,并把程序安装到指定位置。
来自:http://www.cnblogs.com/wwwsinagogogo/archive/2011/08/15/2139124.html
主推荐:
RegexBuddy: http://www.onlinedown.net/soft/56808.htm
一个强大的正则表达式工具,包括对正则表达式的学习,测试,使用和保存等功能。但这是一个收费软件。
推荐一个很不错的正则表达式入门教程 – http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm。
---
阅读全文
http上传文件深度解析-高性能http传输
2008-12-10 11:59
最近在做web服务器的时候将一些应用集成在了服务器里面,比如说文件上传,结果调试用了一个星期的时间,搞得自己头昏脑涨,现在总于解决了,现将注意细节叙述如下:
http上传协议很简单,用post协议,协议头部包含Content-Length项,这是一次上传的所有body部分长度总和,包括多文件之间的分割等等,所以也就难怪了,http上传要比ftp等慢,其实慢就慢在body解析上,下面对于文件分割作一些阐述。
一个典型的http上传协议头类似于这样:
POST /public/upload.action HTTP/1.1
ost: maiit.com:8088
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b5) Gecko/2008041514 Firefox/3.0b5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
ccept-Encoding: gzip,deflate
ccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://maiit.com:8088/public/up.html
Content-Type: multipart/form-data; boundary=---------------------------88739631214394723612117964652
Content-Length: 3433
其中,boundary是文件分割符号,每个文件以如下字段开头
-----------------------------88739631214394723612117964652
Content-Disposition: form-data; name="file"; filename="hashtables.h"
Content-Type: text/x-chdr
以如下字段结尾:
-----------------------------88739631214394723612117964652
Content-Disposition: form-data; name="uploadButton"
up
-----------------------------88739631214394723612117964652--
阅读全文
2008-12-10 11:59
最近在做web服务器的时候将一些应用集成在了服务器里面,比如说文件上传,结果调试用了一个星期的时间,搞得自己头昏脑涨,现在总于解决了,现将注意细节叙述如下:
http上传协议很简单,用post协议,协议头部包含Content-Length项,这是一次上传的所有body部分长度总和,包括多文件之间的分割等等,所以也就难怪了,http上传要比ftp等慢,其实慢就慢在body解析上,下面对于文件分割作一些阐述。
一个典型的http上传协议头类似于这样:
POST /public/upload.action HTTP/1.1
ost: maiit.com:8088
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b5) Gecko/2008041514 Firefox/3.0b5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
ccept-Encoding: gzip,deflate
ccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://maiit.com:8088/public/up.html
Content-Type: multipart/form-data; boundary=---------------------------88739631214394723612117964652
Content-Length: 3433
其中,boundary是文件分割符号,每个文件以如下字段开头
-----------------------------88739631214394723612117964652
Content-Disposition: form-data; name="file"; filename="hashtables.h"
Content-Type: text/x-chdr
以如下字段结尾:
-----------------------------88739631214394723612117964652
Content-Disposition: form-data; name="uploadButton"
up
-----------------------------88739631214394723612117964652--
阅读全文
(1)closest和Index的混合使用示例:
closest会首先检查当前元素是否匹配,如果匹配则直接返回元素本身。如果不匹配则向上查找父元素,一层一层往上,直到找到匹配选择器的元素。
(2)Index:
搜索与参数表示的对象匹配的元素,并返回相应元素的索引值。如果找到了匹配的元素,从0开始返回;如果没有找到匹配的元素,返回-1。
Index 的Js:
而我们这儿是这样的:
阅读全文
closest会首先检查当前元素是否匹配,如果匹配则直接返回元素本身。如果不匹配则向上查找父元素,一层一层往上,直到找到匹配选择器的元素。
(2)Index:
搜索与参数表示的对象匹配的元素,并返回相应元素的索引值。如果找到了匹配的元素,从0开始返回;如果没有找到匹配的元素,返回-1。
Index 的Js:
而我们这儿是这样的:
阅读全文
su命令:以某账户执行后推出,继续返回原账户的方法。
Unix/LinuxC技术 jackxiang 2012-5-31 09:22
Smarty新模板加入后,缓存不自动更新的偶发现像记录备案
Php/Js/Shell/Go jackxiang 2012-5-30 15:49
回忆未来(372647693) 15:40:50
近来遇到smarty缓存问题,当一个模板被新的模板替代后,其输出没有变化,但模板已经变了,这种问题偶尔会出现,不知道是怎么一回事。。。
[Tx]向东(372647693) 15:42:29
偶尔会出现,刚开始以为是没有上传新模板上去或者属组问题,但发现不是这个问题,楼上的什么意思?
vacas(905876351) 15:43:37
你检查一下这个模板有可能被缓存在哪儿
服务器文件 内存 浏览器
[Tx]向东(372647693) 15:44:10
说白了就是那个:template_c 这个目录没有给更新。
vacas(905876351) 15:41:46
内存有缓存...
David(254091767) 15:41:20
缓存没有更新的
解析模板时,会生成一个缓存文件,这个缓存文件没有更新,所以就没有变化
竖琴螺(421033770) 15:42:01
把缓存文件全删掉
David(254091767) 15:42:07
你把浏览器的缓存清一下,再次打开,就没有这个问题了
还有浏览器的缓存呢?
我最近开发的项目,也是老遇到这个问题
竖琴螺(421033770) 15:42:44
之前好像也遇见过,是怎么解决的也忘了,呵呵
莫莫<happy.yin@qq.com> 15:43:09
我差了 你们还用SMARTY那??
框架 里自身就有缓存机制了
回忆未来(372647693) 15:43:27
浏览器强制刷新了的。
WANG(896186882) 15:43:54
smarty的模板缓存清掉
竖琴螺(421033770) 15:43:57
_templates_c里的文件都删除掉
然后刷新页面
竖琴螺(421033770) 15:46:35
smarty的缓存开关变量是$caching
回忆未来(372647693) 15:47:29
但是加一个新的模板应该会自动去重新编译一次啊,但就是没有做这事情,不是说根据修改时间比对会去重新编译一次新模板的么?但偶尔会没有做
回忆未来(372647693) 15:44:29
说白了就是那个:template_c 这个目录没有给更新。 是不是smarty的一个bug啊。
[CIECC]NVSky(365650070) 15:45:05
把TC干掉
[free]你懂得(337207961) 15:59:39
直接看编译以后的模板的生成时间跟你的模板更改时间一致吗
[Tx]向东(372647693) 16:00:35
嗯,我觉得是由于某种原因导致判断没有更新模板,导致根本没有编译。
这种几率很少发生,但时有发生。
[free]你懂得(337207961) 16:02:42
你先看看啊,编译后的模板里边有模板的最新生成时间
[Tx]向东(372647693) 16:04:05
没有吧?还是我没有找到,在哪儿?
<?php /* Smarty version 2.6.18, created on 2012-05-24 09:37:07
这玩意?
[free]你懂得(337207961) 16:04:53
嗯
[Tx]向东(372647693) 16:05:39
这个时间是老的时间,所以,没有把新模板的改动给加进来。
就把这个模板给丢给浏览器了。所以,一直是老的模板,新的模板没有给重新编译。
[TX]-金灶沐(86297986) 16:06:43
你应该干掉缓存啊
[free]你懂得(337207961) 16:06:45
smarty有个重新编译的选项吧,试了吗
[TX]-金灶沐(86297986) 16:06:50
你是不是is_cache了
[Tx]向东(372647693) 16:07:22
什么选项?
一个一个来,我是替那帮微博开放平台的兄弟们排查一下,再就是我自己偶尔会有这样的问题,所以,想聊出个水落石出。
[free]你懂得(337207961) 16:08:31
Example 13-9. clear_compiled_tpl
例子 13-9. 清除已编译模板
// clear a specific template resource// 清除指定模板资源的编译文件$smarty->clear_compiled_tpl("index.tpl");
// clear entire compile directory// 清除所有已编译的模板文件$smarty->clear_compiled_tpl();
[Tx]向东(372647693) 16:09:13
他们好像没,现在兄弟们都懒,想smarty自己判断有更新就编译呢。
[free]你懂得(337207961) 16:09:42
如果再不行的话只能找源码看了,新浪这边的发布系统也这样,主要是由其他延时
[TX]-金灶沐(86297986) 16:09:56
你是新浪的啊..
[Tx]向东(372647693) 16:10:04
嗯,多谢兄弟们。。。
[TX]-金灶沐(86297986) 16:10:05
smarty会自动找过期时间的..
我看源码的时候 他编译的时候回去看 然后对比..
[free]你懂得(337207961) 16:11:46
文件的更新时间也有缓存
[free]你懂得(337207961) 16:14:52
金灶沐 那个作对比用的什么方法啊,是调用的受clearstatcache影响的函数吗
[free]你懂得(337207961) 16:15:49
我就是再说这个问题,如果用的clearstatcache影响的方法可能判断出错
可能文件有缓存,smary在做相关操作时用到调用的受clearstatcache影响的函数的缘故。
解决方法:
=============
也只有每次都必须给把那个smarty的template_c目录下的文件全给干掉了。
近来遇到smarty缓存问题,当一个模板被新的模板替代后,其输出没有变化,但模板已经变了,这种问题偶尔会出现,不知道是怎么一回事。。。
[Tx]向东(372647693) 15:42:29
偶尔会出现,刚开始以为是没有上传新模板上去或者属组问题,但发现不是这个问题,楼上的什么意思?
vacas(905876351) 15:43:37
你检查一下这个模板有可能被缓存在哪儿
服务器文件 内存 浏览器
[Tx]向东(372647693) 15:44:10
说白了就是那个:template_c 这个目录没有给更新。
vacas(905876351) 15:41:46
内存有缓存...
David(254091767) 15:41:20
缓存没有更新的
解析模板时,会生成一个缓存文件,这个缓存文件没有更新,所以就没有变化
竖琴螺(421033770) 15:42:01
把缓存文件全删掉
David(254091767) 15:42:07
你把浏览器的缓存清一下,再次打开,就没有这个问题了
还有浏览器的缓存呢?
我最近开发的项目,也是老遇到这个问题
竖琴螺(421033770) 15:42:44
之前好像也遇见过,是怎么解决的也忘了,呵呵
莫莫<happy.yin@qq.com> 15:43:09
我差了 你们还用SMARTY那??
框架 里自身就有缓存机制了
回忆未来(372647693) 15:43:27
浏览器强制刷新了的。
WANG(896186882) 15:43:54
smarty的模板缓存清掉
竖琴螺(421033770) 15:43:57
_templates_c里的文件都删除掉
然后刷新页面
竖琴螺(421033770) 15:46:35
smarty的缓存开关变量是$caching
回忆未来(372647693) 15:47:29
但是加一个新的模板应该会自动去重新编译一次啊,但就是没有做这事情,不是说根据修改时间比对会去重新编译一次新模板的么?但偶尔会没有做
回忆未来(372647693) 15:44:29
说白了就是那个:template_c 这个目录没有给更新。 是不是smarty的一个bug啊。
[CIECC]NVSky(365650070) 15:45:05
把TC干掉
[free]你懂得(337207961) 15:59:39
直接看编译以后的模板的生成时间跟你的模板更改时间一致吗
[Tx]向东(372647693) 16:00:35
嗯,我觉得是由于某种原因导致判断没有更新模板,导致根本没有编译。
这种几率很少发生,但时有发生。
[free]你懂得(337207961) 16:02:42
你先看看啊,编译后的模板里边有模板的最新生成时间
[Tx]向东(372647693) 16:04:05
没有吧?还是我没有找到,在哪儿?
<?php /* Smarty version 2.6.18, created on 2012-05-24 09:37:07
这玩意?
[free]你懂得(337207961) 16:04:53
嗯
[Tx]向东(372647693) 16:05:39
这个时间是老的时间,所以,没有把新模板的改动给加进来。
就把这个模板给丢给浏览器了。所以,一直是老的模板,新的模板没有给重新编译。
[TX]-金灶沐(86297986) 16:06:43
你应该干掉缓存啊
[free]你懂得(337207961) 16:06:45
smarty有个重新编译的选项吧,试了吗
[TX]-金灶沐(86297986) 16:06:50
你是不是is_cache了
[Tx]向东(372647693) 16:07:22
什么选项?
一个一个来,我是替那帮微博开放平台的兄弟们排查一下,再就是我自己偶尔会有这样的问题,所以,想聊出个水落石出。
[free]你懂得(337207961) 16:08:31
Example 13-9. clear_compiled_tpl
例子 13-9. 清除已编译模板
// clear a specific template resource// 清除指定模板资源的编译文件$smarty->clear_compiled_tpl("index.tpl");
// clear entire compile directory// 清除所有已编译的模板文件$smarty->clear_compiled_tpl();
[Tx]向东(372647693) 16:09:13
他们好像没,现在兄弟们都懒,想smarty自己判断有更新就编译呢。
[free]你懂得(337207961) 16:09:42
如果再不行的话只能找源码看了,新浪这边的发布系统也这样,主要是由其他延时
[TX]-金灶沐(86297986) 16:09:56
你是新浪的啊..
[Tx]向东(372647693) 16:10:04
嗯,多谢兄弟们。。。
[TX]-金灶沐(86297986) 16:10:05
smarty会自动找过期时间的..
我看源码的时候 他编译的时候回去看 然后对比..
[free]你懂得(337207961) 16:11:46
文件的更新时间也有缓存
[free]你懂得(337207961) 16:14:52
金灶沐 那个作对比用的什么方法啊,是调用的受clearstatcache影响的函数吗
[free]你懂得(337207961) 16:15:49
我就是再说这个问题,如果用的clearstatcache影响的方法可能判断出错
可能文件有缓存,smary在做相关操作时用到调用的受clearstatcache影响的函数的缘故。
解决方法:
=============
也只有每次都必须给把那个smarty的template_c目录下的文件全给干掉了。
以前,公司都愿意找能力强、资格老的人来做研发,有点个人英雄主义在里面。一个优秀能干的员工能给公司带来很大的利益。
但是,凡事都有双面性。
现在这个社会,人才流动很快。能力强的、聪明的人,虽说给公司带来过不少利益,但也经常给公司带来很大的伤害,做几年就远走高飞的人太多了。他们的离开给公司造成了很大的缺口,很多地方都要好久才能补上。总之,元气大伤。
这种情况见得多了,这些大公司就精了。他们发现,不能让公司太依赖人才,而应该让人才依赖公司才对头。管理层的最终作用,就是让谁离开了都无所谓,公 司都能正常运作。所以,他们把各个部门划分得很细很细,每个人负责的东西很单一。这样一来,“术业有专攻”,效率上去了,经验积累了,工作都流程化了。渐 渐地,公司的运作流程化了。
结果就是,员工的工作就变得很单调了,没有太多的创作性在里面。什么创意、可靠性、稳定性等都有专人做了,你就只需要拿个小手册,按规矩做好你那一份子事情就可以了。到最后,对公司来说,就是谁都不重要了。
总得来说,现在规模越大的公司,分工越细,对人才的要求就越低。反倒是小公司需要多面手,但是很多人不屑于去,所以大家都开始抱怨。
因此,大家一定要有个明确的职业发展方向,不要以为进大公司了你就前途一片光明了。在大公司里学做人,小公司里学做事。如果想技术上有造诣,工作中的经验积累只是一方面,想要有突破,要靠自己业余深造!不然,路会越走越窄的。
但是,凡事都有双面性。
现在这个社会,人才流动很快。能力强的、聪明的人,虽说给公司带来过不少利益,但也经常给公司带来很大的伤害,做几年就远走高飞的人太多了。他们的离开给公司造成了很大的缺口,很多地方都要好久才能补上。总之,元气大伤。
这种情况见得多了,这些大公司就精了。他们发现,不能让公司太依赖人才,而应该让人才依赖公司才对头。管理层的最终作用,就是让谁离开了都无所谓,公 司都能正常运作。所以,他们把各个部门划分得很细很细,每个人负责的东西很单一。这样一来,“术业有专攻”,效率上去了,经验积累了,工作都流程化了。渐 渐地,公司的运作流程化了。
结果就是,员工的工作就变得很单调了,没有太多的创作性在里面。什么创意、可靠性、稳定性等都有专人做了,你就只需要拿个小手册,按规矩做好你那一份子事情就可以了。到最后,对公司来说,就是谁都不重要了。
总得来说,现在规模越大的公司,分工越细,对人才的要求就越低。反倒是小公司需要多面手,但是很多人不屑于去,所以大家都开始抱怨。
因此,大家一定要有个明确的职业发展方向,不要以为进大公司了你就前途一片光明了。在大公司里学做人,小公司里学做事。如果想技术上有造诣,工作中的经验积累只是一方面,想要有突破,要靠自己业余深造!不然,路会越走越窄的。
李开复: 怪不得那么多创业者在中关村找「葵花宝典」!
李开复: 中关村,几十年前还是一片荒凉的坟场,大多是太监的坟墓。因明清时期称太监为“中官”,所以这里被叫做“中官坟”。太监多在此建庙宇和养老的庄园,也因当时人称太监为“中官”,故称此地为“中官村”。解放后选择这里建中国科学院,觉得“中官”二字不好,才改名为“中关村”。(via 潜台词Outliers)
摘录自:
http://t.qq.com/p/t/138507124952483
李开复: 中关村,几十年前还是一片荒凉的坟场,大多是太监的坟墓。因明清时期称太监为“中官”,所以这里被叫做“中官坟”。太监多在此建庙宇和养老的庄园,也因当时人称太监为“中官”,故称此地为“中官村”。解放后选择这里建中国科学院,觉得“中官”二字不好,才改名为“中关村”。(via 潜台词Outliers)
摘录自:
http://t.qq.com/p/t/138507124952483
在PHP5中时间不准的解决方法
Php/Js/Shell/Go jackxiang 2012-5-22 22:35
在Bo-blog兄弟提供的空间里用date发现时间不准,于是查了一下,如下设置及可:
在PHP5中, 时间默认 是 格林尼治时间
想要用北京时间,可以用以下方法
程序中调整
PHP代码:
date_default_timezone_set (PRC);
php.ini中调整
代码:
date.timezone = PRC
在PHP5中, 时间默认 是 格林尼治时间
想要用北京时间,可以用以下方法
程序中调整
PHP代码:
date_default_timezone_set (PRC);
php.ini中调整
代码:
date.timezone = PRC
近来用DW,写代码时会遇到一个问题,关于花括号配对的问题:
找了好久,才发现是: ctrl 同时按:回车旁边的那个双引号下面的一个点那个键,(注:有双引号和一个点在一个键上)。
按ctrl+ '即可高亮显示对应括号代码,呵呵。
PHP:
DW CS6.0:Ctrl+H (PHP函数补全)
sublime选中花括号里面的内容,以及花括号的{到 }:
http://jackxiang.com/post/9617/
找了好久,才发现是: ctrl 同时按:回车旁边的那个双引号下面的一个点那个键,(注:有双引号和一个点在一个键上)。
按ctrl+ '即可高亮显示对应括号代码,呵呵。
PHP:
DW CS6.0:Ctrl+H (PHP函数补全)
sublime选中花括号里面的内容,以及花括号的{到 }:
http://jackxiang.com/post/9617/
说到熵增,应该是我在大学时《热力学·统计物理》的课程,而现在也有在软件开发上有运用,不得不说,物理数学始终是社会各行各业的两翼,始终在幕后默默的发挥作用。
在网上找到一个哥们也从这个熵增的角度来描述一个软件系统如何尽量避免熵增,觉得写得有些道理,于是特转些文章!
来源:http://blog.csdn.net/caowenbin/article/details/7308188
阅读全文
在网上找到一个哥们也从这个熵增的角度来描述一个软件系统如何尽量避免熵增,觉得写得有些道理,于是特转些文章!
来源:http://blog.csdn.net/caowenbin/article/details/7308188
阅读全文
原因:如果上一次编译时为20060101,你现在再编译就会报这样的错误.
解决:把时间改了或运行下来命令再make
1. date -s "16:40:00"
2.find . -type f -exec touch {} \;
也可以参看:
http://blog.chinaunix.net/uid-26696487-id-3076840.html
解决:把时间改了或运行下来命令再make
1. date -s "16:40:00"
2.find . -type f -exec touch {} \;
也可以参看:
http://blog.chinaunix.net/uid-26696487-id-3076840.html
在IE下工具-》Internet选项-》安全-》自定义级别-》安全设置-》找到显示混合内容-》选启动而不是提示。这样做后也就不会再弹出安全信息的对话框了。