需要跨日执行的crontab写法

需要跨日执行的crontab,比如从20点运行到凌晨2点,怎么写?
我以为这样写就可以了
* 20-2 * * *
实际上错了,保存后,直接报小时格式错误,无法保存啊。拆成两条,如下:
* 20-23 * * *
* 0-2 * * *
这样就可以了,要么这样应该也可以:
* 20-23,0,1,2 * * *
要是到早上,岂不是要写好多个逗号?麻烦。。。

thinkphp的URL_MODEL参数

URL_MODEL,显然是url地址模式,建议设置值为2。
据说默认值就是2,不过我用的这个不知道什么版本,确认默认值不是2,结果url就是类似这样的:localhost/index.php/xxx/yyy/zzz,多了index.php,非常难看,查了一下才知道,原来是URL_MODEL设置问题,在项目配置文件里,显式申明一下这个配置项,置为2,index.php就不见了。

phpmyadmin最新版本需要chdir函数支持

刚下载了最新的phpmyadmin4.04,解压使用了一下,发现登录框出不来,用chrome调试了一下,发现包含登录表单的div是隐藏状态,手工去掉后,发现登录不上去,再调试,发现了问题所在,原来是很多地方使用了chdir函数。
为了安全起见,很多生产环境都禁掉了chdir函数,比如我这里的,包括之前3.5.8.1都有这个问题,看了一下源码,只是为了获取相对路径,方便include载入文件,完全没必要啊。
还是切换到很老的一个版本,没办法。。。

thinkphp模板一个奇葩bug

要循环一个js语句,如下:

<volist name="rs" id="vo">
box.add({"url":"http://{$vo.img}","href":"http://{$vo.url}","title":"{$vo.title}"});
</volist>

 

这是非常常见的图片轮播js语句,但是奇葩的事情出现了,第一个{$vo.img}标签不解析,直接源码输出了,但是后面两个标签无影响。
问题出在哪里呢?
原来是第一个{有问题,thinkphp可能将第一个{和后面非空格字符解析成标签了,果断将第一个{后面加了个空格,正常了。

kill crontab运行的php进程

php写了个采集程序,命令行方式在跑,最大的问题就是超时设置在命令行下无效,经常跑超时,然后cpu消耗越来越大,外部访问php直接502,头疼,killall又没有进程名,搜了一下,用管道可以定时杀超时的php命令行。
kill -s 9 `ps aux | grep php文件名 | awk ‘{print $2}’`
需要注意的是这个php文件名起的不要太极品,比如mysql什么的,误伤不要找我。

phpword使用小结

phpword,生成word文档的php工具,之前有过介绍,不过没有实际使用,最近用了一下,问题还是挺多的。

官网:phpword.codeplex.com

问题1:从模板生成word文档,支持在word模板文档里写替换标签,标签格式为${xxx},不过一定要注意,不要直接在word里编辑这些标签,一定要在文本文档里先写好标签,直接拷贝粘贴上去,千万不要编辑,否则无法替换,原因也很简单,把word文档另存为xml,然后看xml里标签的位置,会发现标签中间被插入了很多没用的xml节点,还有中文字体的节点。。。

问题2:中文乱码问题,这个一定是存在的,如果php环境已经是utf8了,要找到关键地方,转utf8的代码,去掉,否则就是转两次编码了,典型的是phpword\template.php文件,把这行注释掉:$replace = utf8_encode($replace);

问题3:linux下报“Could not close zip file.”错误,这个你永远想不到,要将模板文件所在目录权限改为可写,因为要在那个目录下生成临时文件。。。

问题4:引用模板文件和另存文件路径什么的,最好用绝对路径,否则。。。

前端的基本素质

前端的基本素质,最基本的,超链接的地方,不能做成button,做成button难道用js打开链接?

需要做成按钮效果的超链接,必须把按钮样式做在A标签上,不能做在A标签的父级标签上,比如这样肯定是不行的:

<li class=”button”><a href=””>超链</a></li>

原因很简单,既然是按钮效果,li的范围一定比A大,按钮中只有A标签的范围内才能响应链接,其他位置,点了也没反应,这是非常糟的用户体验。

这两种极品没素质的前端效果,最近都被我遇到了。