||
php 是脚本语言,实现定时器是有难度的。
有几个方案和大家共勉
这里譬如我要实现 定时统计某篇新闻的评论数。
1、使用php桌面运行库
首先有个PHP桌面运行支持库,叫做jeact,安装后,可以写php代码在桌面运行。
也包括了基本的一些UI.不过玩玩可以,不怎么建议使用,本身php就是干web端的事情,桌面端应该由其他适合的程序来干。
不过最近发现这货的官网无法访问了。可能确实没有什么大的价值
2、用其他语言编写客户端定时器
把统计评论数的代码写成一个function 函数,并发布成webservice,然后在服务器上用java或者c#或者go语言,编写一个桌面端程序 定时去调用该webservice。有人说为何不直接调用库,这里不建议这么做,因为数据库一般是外网隔离的,如果分布式部署,并不能保证你的桌面程序能 顺畅调用数据库。
3、使用php的特性函数
上述代码,只需用网页去访问一次,便可根据需求定时运行。
不过性能低,而且容易造成被攻击,所以一般开头都要加一些身份验证标识,防止被其他不相关用户访问到该页面(不要以为你藏起来就没人发现,用软件扫一下就知道你的页面在哪)
4、个人推荐的最佳办法。
这里主要讲解windows的办法
Linux ,请参考 这篇文章,非常方便就能实现 http://www.cnblogs.com/feisky/archive/2010/03/20/1690561.html
windows下,调用windows计划任务这个老生常谈的功能
首先在网站中建立一个php文件,把函数写在php里面,保证只要访问这个页面就能执行这个函数,为了安全最好带一个加密参数,在php中判断 是否密钥正确
如 :exec.php?pwd=&%%&(^^FFEW
然后在exec.php 头部写上
首先建立一个 bat文件,如exec.bat
在文件中写上
D:\这里是你php按照路径\php.exe -q c:\网站路径\exec.php?pwd=&%%&(^^FFEW
完毕后保存 即可。
最后、建立一个WINDOWS计划任务:
开始–>控制面板–>任务计划–>添加任务计划
浏览文件夹选择上面的exec.bat 文件
设置时间和密码(登陆WINDOWS的)
保存.
一切OK,接下来只需运行就可以。
这里本人不建议使用队列服务来做。一个不靠谱,二个很难监控其稳定性,第三个和web主程序绑定太深、性能不高。
队列不是用来干定时服务这些事情的。
http://www.shenyisyn.org/2013/06/14/php-timer.htm