PHP Dio扩展新函数dio_fdopen参数返回--bad file descriptor的分析:
昨天准备做一个程序,PHP的串口扩展程序,用来做串口打开的,于是用dio_fdopen来新建一个文件:
每个打开的文件都会被分配一个文件描述符.[1]stdin, stdout, 和stderr的文件描述符分别是0, 1, 和 2. 对于正在打开的额外文件, 保留了描述符3到9. 在某些时候将这些格外的文件描述符分配给stdin, stdout, 或者是stderr作为临时的副本链接是非常有用的.
返回:Bad file descriptor。
查看PHP扩展的源代码,如下:
PHP的最新扩展:dio_open代码片段摘录。
返回错误在这一块,如下:
这儿涉及到fcntl函数的调用返回有问题,查其相关参数:
F_GETFL : 用来读取open系统调用第二个参数设置的标志,即文件的打开方式(O_RDONLY,O_WRONLY,O_APPEND等),它不需要第三个参数。实际上上这时函数返回的是file结构中的flags域。
其相当于只是创建了一个文件,并未确定这个文件的状态。在C里会补上一个 O_RDWR,
fd = open ("hole", O_CREAT, S_IRWXU | S_IRWXG) ;
变为:
fd = open ("hole", O_CREAT | O_RDWR, S_IRWXU | S_IRWXG) ;
fcntl这个系统调用功能比较多,可以执行多种操作,其内核函数在fs/fcntl.c中定义:
1.入口参数:
(1)fd:欲访问文件的文件描述符
(2)cmd:要执行的操作的命令,这个参数定义了10个标志,下面介绍其中的5个,
F_DUPFD、F_GETFD、F_SETFD、F_GETFL和 F_SETFL
(3)arg:可选,主要根据第二个命令来决定是否需要
2.出口参数:根据第二个参数的不同,这个返回值也不一样。
3.函数功能:
第二个参数是F_DUPFD,则进行复制文件描述符的操作。它需要用到第三个参数arg,这时arg是一个文件描述符,fcntl(fd,F_DUPFD,arg)在files_struct结构中从指定的arg开始搜索空闲的文件描述符,找到第一个后,将fd的内容复制进来,然后将新找到的文件描述符返回。
第二个参数是F_GETFD,则返回files_struct结构中close_on_exec的值。无需第三个参数。
第二个参数是F_SETFD,则需要第三个参数,若arg最低位为1,则对close_on_exec置位,否则清除close_on_exec。
第二个参数是F_GETFL,则用来读取open系统调用第二个参数设置的标志,即文件的打开方式(O_RDONLY,O_WRONLY,O_APPEND等),它不需要第三个参数。实际上上这时函数返回的是file结构中的flags域。
第二个参数是F_SETFL,则用来对open系统调用第二个参数设置的标志进行改变,但是它只能对O_APPEND和O_NONBLOCK标志进行改变,这时需要第三个参数arg,用来确定如何改变。函数返回0表示操作成功,否则返回-1,并置一个错
这个文件句柄的操作感觉还大有学问在里面,有什么同步,异步等等。
参看:http://blog.csdn.net/wallwind/article/details/7281700
回家了解:
昨天准备做一个程序,PHP的串口扩展程序,用来做串口打开的,于是用dio_fdopen来新建一个文件:
每个打开的文件都会被分配一个文件描述符.[1]stdin, stdout, 和stderr的文件描述符分别是0, 1, 和 2. 对于正在打开的额外文件, 保留了描述符3到9. 在某些时候将这些格外的文件描述符分配给stdin, stdout, 或者是stderr作为临时的副本链接是非常有用的.
返回:Bad file descriptor。
查看PHP扩展的源代码,如下:
PHP的最新扩展:dio_open代码片段摘录。
返回错误在这一块,如下:
这儿涉及到fcntl函数的调用返回有问题,查其相关参数:
F_GETFL : 用来读取open系统调用第二个参数设置的标志,即文件的打开方式(O_RDONLY,O_WRONLY,O_APPEND等),它不需要第三个参数。实际上上这时函数返回的是file结构中的flags域。
其相当于只是创建了一个文件,并未确定这个文件的状态。在C里会补上一个 O_RDWR,
fd = open ("hole", O_CREAT, S_IRWXU | S_IRWXG) ;
变为:
fd = open ("hole", O_CREAT | O_RDWR, S_IRWXU | S_IRWXG) ;
fcntl这个系统调用功能比较多,可以执行多种操作,其内核函数在fs/fcntl.c中定义:
1.入口参数:
(1)fd:欲访问文件的文件描述符
(2)cmd:要执行的操作的命令,这个参数定义了10个标志,下面介绍其中的5个,
F_DUPFD、F_GETFD、F_SETFD、F_GETFL和 F_SETFL
(3)arg:可选,主要根据第二个命令来决定是否需要
2.出口参数:根据第二个参数的不同,这个返回值也不一样。
3.函数功能:
第二个参数是F_DUPFD,则进行复制文件描述符的操作。它需要用到第三个参数arg,这时arg是一个文件描述符,fcntl(fd,F_DUPFD,arg)在files_struct结构中从指定的arg开始搜索空闲的文件描述符,找到第一个后,将fd的内容复制进来,然后将新找到的文件描述符返回。
第二个参数是F_GETFD,则返回files_struct结构中close_on_exec的值。无需第三个参数。
第二个参数是F_SETFD,则需要第三个参数,若arg最低位为1,则对close_on_exec置位,否则清除close_on_exec。
第二个参数是F_GETFL,则用来读取open系统调用第二个参数设置的标志,即文件的打开方式(O_RDONLY,O_WRONLY,O_APPEND等),它不需要第三个参数。实际上上这时函数返回的是file结构中的flags域。
第二个参数是F_SETFL,则用来对open系统调用第二个参数设置的标志进行改变,但是它只能对O_APPEND和O_NONBLOCK标志进行改变,这时需要第三个参数arg,用来确定如何改变。函数返回0表示操作成功,否则返回-1,并置一个错
这个文件句柄的操作感觉还大有学问在里面,有什么同步,异步等等。
参看:http://blog.csdn.net/wallwind/article/details/7281700
回家了解:
php 打印测试技巧
Php/Js/Shell/Go jackxiang 2012-6-30 10:30
点评:值得借鉴其方法,所以转载如下:
以前习惯用 echo,print_r 等方法来测试php输出,这样多多少少会影响到代码的正常运行,现改成“把测试变量输出到文本”的形式,可实现日志形式的调试,代码如下:
主要是用到“File_writefile”函数,对上面的 “File_writefile”函数再包装一下:
应用如下:
输出结果:
来自:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/12/02/2272161.html
以前习惯用 echo,print_r 等方法来测试php输出,这样多多少少会影响到代码的正常运行,现改成“把测试变量输出到文本”的形式,可实现日志形式的调试,代码如下:
主要是用到“File_writefile”函数,对上面的 “File_writefile”函数再包装一下:
应用如下:
输出结果:
来自:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/12/02/2272161.html
表单提交数据大小的限制:Firebug 达到了 Post 请求大小限制。
Php/Js/Shell/Go jackxiang 2012-6-28 10:15
今天,遇到:... Firebug 达到了 Post 请求大小限制。 ...
今天在做post表单提交多个textarea控件中的内容时,出现一些意外情况,为了避免以后再出现这种情况,有个清晰的思路,特此写下以下琐碎细节。测试环境为windows的iis。
以下内容针对一个textarea输入内容测试遇到的问题。当提交数据量比较小时,保存正常。当提交数据量为一篇文章时(大约30k左右),点击保存出现白页现象,没有任何反应。通过firebug查看网络查看表单提交情况,post选项中出现“... Firebug 达到了 Post 请求大小限制。 ...”这样的提示。
总结:
(1)post提交表单数据量限制为100k左右,超过将无法提交。
(2)在iis6.0中表单最大传输大小为200k,因此需要通过以下方式修改配置文件,实现大数据传输
1. 关闭 IIS Admin Service 服务
2. 打开 %WinDir%\system32\inetsrv\metabase.xml
3. 修改 AspMaxRequestEntityAllowed 的值为自己需要的, 默认为 204800,AspBufferingLimit也改成相同值,
4. 启动 IIS Admin Service
(3)在iis5.1以下post 方法限制传递的数据为2M
(3)get最大提交数据量为4k左右
(4)表单控件(如textarea)最大提交的数据量为30k左右,超过将出现以上异常情况,导致表单无法提交成功.
来自:http://blog.csdn.net/zouqingfang/article/details/7220229
今天在做post表单提交多个textarea控件中的内容时,出现一些意外情况,为了避免以后再出现这种情况,有个清晰的思路,特此写下以下琐碎细节。测试环境为windows的iis。
以下内容针对一个textarea输入内容测试遇到的问题。当提交数据量比较小时,保存正常。当提交数据量为一篇文章时(大约30k左右),点击保存出现白页现象,没有任何反应。通过firebug查看网络查看表单提交情况,post选项中出现“... Firebug 达到了 Post 请求大小限制。 ...”这样的提示。
总结:
(1)post提交表单数据量限制为100k左右,超过将无法提交。
(2)在iis6.0中表单最大传输大小为200k,因此需要通过以下方式修改配置文件,实现大数据传输
1. 关闭 IIS Admin Service 服务
2. 打开 %WinDir%\system32\inetsrv\metabase.xml
3. 修改 AspMaxRequestEntityAllowed 的值为自己需要的, 默认为 204800,AspBufferingLimit也改成相同值,
4. 启动 IIS Admin Service
(3)在iis5.1以下post 方法限制传递的数据为2M
(3)get最大提交数据量为4k左右
(4)表单控件(如textarea)最大提交的数据量为30k左右,超过将出现以上异常情况,导致表单无法提交成功.
来自:http://blog.csdn.net/zouqingfang/article/details/7220229
为什么不使用nginx+php(fastcgi)作为生产环境?
Php/Js/Shell/Go jackxiang 2012-6-25 20:54
前言,近来fastCGI流行,也有人提出了相反的看法,并作出了原因解释,觉得有道理,So。。。
php群里的兄弟:
nginx这么厉害吗?答:我测试,10000次,10次并发 机器,就是不死 65%cpu了,还不死。。。nginx防盗链牛逼可以根据参数加密。
php-fpm确实,听蛋疼的 5个进程,每个占12% 我操,cpu干不了别的了,php-fpm是相当的不行 cpu占用太厉害.用apache啊.apache有些特性不行。。。
Nginx 502:
fast_cgi设置
fastcgi_connect_timeout 30;
fastcgi_send_timeout 30;
fastcgi_read_timeout 30;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
Php-fpm设置
<value name="listen_address"> /dev/shm/php-fpm.sock </value>
<value name="max_children">128</value>
<value name="request_terminate_timeout">10s</value>
<value name="request_slowlog_timeout">5s</value>
<value name="slowlog">/path/to/slow.log</value>
<value name="rlimit_files">65535</value>
php(fastcgi)不够稳定,经常出现502错误,生成相对复杂的页面没有优势,反而会使php-cgi进程变为僵尸进程.
安全性,多用户多站点权限问题.php(fastcgi)在应对多用户多站点往往捉襟见肘,不易于实施.
整合其他开发语言,apache表现得游刃有余.资源利用恰到好处.
为什么采用nginx做前端,apache作为后端的方案?nginx在处理静态内容上较apache是几倍或几十倍的差异,因而放在前面过滤静态内容是最为恰当的.同时nginx也是一个负载均衡器,低资源消耗,高性能转发是它的特点.经过nginx在前面的过滤,后端的apache需要处理的内容相对就比较少了.只需负责处理动态内容就可以了.在性能与稳定性的权衡下,使用nginx+apache搭配会让它们在各自擅长的领域展现自身的价值.
http://www.vpser.net/build/nginx-apache-guide.html
php群里的兄弟:
nginx这么厉害吗?答:我测试,10000次,10次并发 机器,就是不死 65%cpu了,还不死。。。nginx防盗链牛逼可以根据参数加密。
php-fpm确实,听蛋疼的 5个进程,每个占12% 我操,cpu干不了别的了,php-fpm是相当的不行 cpu占用太厉害.用apache啊.apache有些特性不行。。。
Nginx 502:
fast_cgi设置
fastcgi_connect_timeout 30;
fastcgi_send_timeout 30;
fastcgi_read_timeout 30;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
Php-fpm设置
<value name="listen_address"> /dev/shm/php-fpm.sock </value>
<value name="max_children">128</value>
<value name="request_terminate_timeout">10s</value>
<value name="request_slowlog_timeout">5s</value>
<value name="slowlog">/path/to/slow.log</value>
<value name="rlimit_files">65535</value>
php(fastcgi)不够稳定,经常出现502错误,生成相对复杂的页面没有优势,反而会使php-cgi进程变为僵尸进程.
安全性,多用户多站点权限问题.php(fastcgi)在应对多用户多站点往往捉襟见肘,不易于实施.
整合其他开发语言,apache表现得游刃有余.资源利用恰到好处.
为什么采用nginx做前端,apache作为后端的方案?nginx在处理静态内容上较apache是几倍或几十倍的差异,因而放在前面过滤静态内容是最为恰当的.同时nginx也是一个负载均衡器,低资源消耗,高性能转发是它的特点.经过nginx在前面的过滤,后端的apache需要处理的内容相对就比较少了.只需负责处理动态内容就可以了.在性能与稳定性的权衡下,使用nginx+apache搭配会让它们在各自擅长的领域展现自身的价值.
http://www.vpser.net/build/nginx-apache-guide.html
关于php中设置session过期时间的问题
Php/Js/Shell/Go jackxiang 2012-6-13 16:43
关于php的session文件垃圾回收机制。我已经在网上看了不少资料。大致是说session过期并不会马上清除session文件,而是每次有请求过来的时候根据session.gc_probability/session.gc_divisor的值为概率去遍历以便session目录下的session文件看是否存在过期的session文件,如果过期则清楚。阅读全文
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/
阅读全文
(1)closest和Index的混合使用示例:
closest会首先检查当前元素是否匹配,如果匹配则直接返回元素本身。如果不匹配则向上查找父元素,一层一层往上,直到找到匹配选择器的元素。
(2)Index:
搜索与参数表示的对象匹配的元素,并返回相应元素的索引值。如果找到了匹配的元素,从0开始返回;如果没有找到匹配的元素,返回-1。
Index 的Js:
而我们这儿是这样的:
阅读全文
closest会首先检查当前元素是否匹配,如果匹配则直接返回元素本身。如果不匹配则向上查找父元素,一层一层往上,直到找到匹配选择器的元素。
(2)Index:
搜索与参数表示的对象匹配的元素,并返回相应元素的索引值。如果找到了匹配的元素,从0开始返回;如果没有找到匹配的元素,返回-1。
Index 的Js:
而我们这儿是这样的:
阅读全文
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目录下的文件全给干掉了。
在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
PHP 版本更新至5.3.11 和 5.4.1
Php/Js/Shell/Go jackxiang 2012-4-27 00:00
4月26日,PHP开发团队发布了PHP 版本5.3.11 和 5.4.1,这些更新侧重于对现有的版本分支的bugs修正,还包括了一些和安全性相关的内容。
PHP 5.3.11 和PHP 5.4.1安全性增强包括:
Fixed bug #54374 (Insufficient validating of upload name leading to corrupted $_FILES indices). (CVE-2012-1172).
Add open_basedir checks to readline_write_history and readline_read_history.
仅针对5.3.11 版本的安全性提升:
Fixed bug #61043 (Regression in magic_quotes_gpc fix for CVE-2012-0831).
在这次的发布中还有如下的关键提升:
Added debug info handler to DOM objects.
Fixed bug #61172 (Add Apache 2.4 support).
需要看到一个完整的更新列表的话请到这里看 changelog,源码下载页面在这里;Windows版可以到这里下载。
来源:www.php.net
PHP 5.3.11 和PHP 5.4.1安全性增强包括:
Fixed bug #54374 (Insufficient validating of upload name leading to corrupted $_FILES indices). (CVE-2012-1172).
Add open_basedir checks to readline_write_history and readline_read_history.
仅针对5.3.11 版本的安全性提升:
Fixed bug #61043 (Regression in magic_quotes_gpc fix for CVE-2012-0831).
在这次的发布中还有如下的关键提升:
Added debug info handler to DOM objects.
Fixed bug #61172 (Add Apache 2.4 support).
需要看到一个完整的更新列表的话请到这里看 changelog,源码下载页面在这里;Windows版可以到这里下载。
来源:www.php.net
分享平时工作中那些给力的shell命令
Php/Js/Shell/Go jackxiang 2012-4-21 15:11
javascript中如何确定undefine。
Php/Js/Shell/Go jackxiang 2012-4-12 17:01
一个问题,怎样在js中判断一个对象是null还是undefined,我总结了一下,对于undefined推荐使用===(注意是三个等号,bt吧)或使用typeof,为什么呢?
先看一段Code
var obj;
alert(obj == null);
alert(obj == undefined);
结果是什么?true,true那obj到底是undefined呢还是defined呢?当然是defined的了,而且是null,显然通过==是区分不了的,那要将==替换为===呢?结果就是false,true,个中原因我就不说了,(偷一下懒 :-) ),那如何区分呢?应该使用===或者是typeof,用法?很简单:
if(typeof obj == "undefined")
if(obj === undefined)
实践Ok的代码片段:
先看一段Code
var obj;
alert(obj == null);
alert(obj == undefined);
结果是什么?true,true那obj到底是undefined呢还是defined呢?当然是defined的了,而且是null,显然通过==是区分不了的,那要将==替换为===呢?结果就是false,true,个中原因我就不说了,(偷一下懒 :-) ),那如何区分呢?应该使用===或者是typeof,用法?很简单:
if(typeof obj == "undefined")
if(obj === undefined)
实践Ok的代码片段:
php与smarty结合时:smarty下PHP一样的strpos函数的使用示例
Php/Js/Shell/Go jackxiang 2012-3-22 15:18
PHP百分号转小数,php 小数转换百分数函数
Php/Js/Shell/Go jackxiang 2012-3-20 15:04
PHP 5.4.0 正式版发布,扩展支持还跟不上,有待学习提高,用于生产还需等待。
Php/Js/Shell/Go jackxiang 2012-3-3 21:10
PHP 5.4.0 正式版发布了,该版本包含大量的新特性,同时也修复了很多的 bug ,其中新特性有 traits、一些数组语法的提升、内建的 Web 服务器、性能提升等等,想去请看 changelog
官方发行说明:http://php.net/releases/5_4_0.php
5.3 到 5.4 的移植指南:http://php.net/migration54
下载地址:http://php.net/downloads.php#v5.4.0
来自:http://www.oschina.net/news/26249/php-5-4-0-final
新特性:http://www.oschina.net/question/54100_33123
今天试装了一下这个最新的版本,PHP的ea加速有问题:
lroot@192.168.225.128:~/software/eaccelerator-0.9.6.1# make
make: Warning: File `Makefile' has modification time 2.7e+04 s in the future
Build complete.
Don't forget to run 'make test'.
make: 警告:检测到时钟错误。您的创建可能是不完整的。
2)APC加速:
文件上传进度反馈, 这个需求在当前是越来越普遍, 比如大附件邮件. 在PHP5.4以前, 我们可以通过APC提供的功能来实现. 或者使用PECL扩展uploadprogress来实现.
虽然说, 它们能很好的解决现在的问题, 但是也有很明显的不足:
1. 他们都需要额外安装(我们并没有打算把APC加入PHP5.4)
。。。来自:http://www.laruence.com/2011/10/10/2217.html
无大文件上传和进度需求,先安一下试试:
root@192.168.225.128:~/software/APC-3.1.9# phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
config.m4:180: warning: AC_CACHE_VAL(PHP_APC_GCC_ATOMICS, ...): suspicious cache-id, must contain _cv_ to be cached
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
root@192.168.225.128:~/software/APC-3.1.9# make
make: *** 没有指明目标并且找不到 makefile。 停止
3)Memcache Client扩展,安装成功,但有问题:
root@192.168.225.128:~/software/memcache-2.2.6# ls /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so
/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so
问题:
root@192.168.225.128:~/software/memcache-2.2.6# php -m
PHP Warning: PHP Startup: Unable to load dynamic library ' /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so' - /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so: cannot open shared object file: No such file or directory in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library ' /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so' - /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so: cannot open shared object file: No such file or directory in Unknown on line 0
其他扩展,还没有试,我估计也有很多这样那样的问题,为此,我估计这个PHP5.4.0应该是一个过渡版本,还有很多东东,不光是它本身,还有周边配合主件的完善,这还是需要一短时间的。So,建议大家还是用这个:PHP5.3.10吧,毕竟生产环境不是实验场所。
官方发行说明:http://php.net/releases/5_4_0.php
5.3 到 5.4 的移植指南:http://php.net/migration54
下载地址:http://php.net/downloads.php#v5.4.0
来自:http://www.oschina.net/news/26249/php-5-4-0-final
新特性:http://www.oschina.net/question/54100_33123
今天试装了一下这个最新的版本,PHP的ea加速有问题:
lroot@192.168.225.128:~/software/eaccelerator-0.9.6.1# make
make: Warning: File `Makefile' has modification time 2.7e+04 s in the future
Build complete.
Don't forget to run 'make test'.
make: 警告:检测到时钟错误。您的创建可能是不完整的。
2)APC加速:
文件上传进度反馈, 这个需求在当前是越来越普遍, 比如大附件邮件. 在PHP5.4以前, 我们可以通过APC提供的功能来实现. 或者使用PECL扩展uploadprogress来实现.
虽然说, 它们能很好的解决现在的问题, 但是也有很明显的不足:
1. 他们都需要额外安装(我们并没有打算把APC加入PHP5.4)
。。。来自:http://www.laruence.com/2011/10/10/2217.html
无大文件上传和进度需求,先安一下试试:
root@192.168.225.128:~/software/APC-3.1.9# phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
config.m4:180: warning: AC_CACHE_VAL(PHP_APC_GCC_ATOMICS, ...): suspicious cache-id, must contain _cv_ to be cached
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
root@192.168.225.128:~/software/APC-3.1.9# make
make: *** 没有指明目标并且找不到 makefile。 停止
3)Memcache Client扩展,安装成功,但有问题:
root@192.168.225.128:~/software/memcache-2.2.6# ls /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so
/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so
问题:
root@192.168.225.128:~/software/memcache-2.2.6# php -m
PHP Warning: PHP Startup: Unable to load dynamic library ' /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so' - /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so: cannot open shared object file: No such file or directory in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library ' /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so' - /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so: cannot open shared object file: No such file or directory in Unknown on line 0
其他扩展,还没有试,我估计也有很多这样那样的问题,为此,我估计这个PHP5.4.0应该是一个过渡版本,还有很多东东,不光是它本身,还有周边配合主件的完善,这还是需要一短时间的。So,建议大家还是用这个:PHP5.3.10吧,毕竟生产环境不是实验场所。
Jquery实现Ajax同步请求网页的某个Url地址:Post嵌套一个get同步请求
Php/Js/Shell/Go jackxiang 2012-2-14 18:23
有时我们在Post的Ajax请求时还是需要一个Get的请求,但Ajax在Jquery封装的Get,Post都是默认异步的,要想同步还是得更加底层,于是有了下面的代码,其实还有更好的方法,
或者在全局设置Ajax属性
再用post,get就是同步的了
网上也有,Url及内容贴在最下面:阅读全文
或者在全局设置Ajax属性
再用post,get就是同步的了
网上也有,Url及内容贴在最下面:阅读全文
shell的getopts:用getopts获取命令行参数
Php/Js/Shell/Go jackxiang 2011-12-28 20:38