由于php属于解释型弱语言,所以做定时任务的时候不会像java那样容易,在java中直接给个进程就可以让系统执行定时任务,但是在php中没那么简单 设置都没有多线程的概念。
PHP不支持多线程,有时候处理问题不是那么爽,今天谈论一下PHP定时执行的方法
PHP定时执行的三种方式实现 ↑
1、windows 的计划任务
2、linux的脚本程序
3、让web浏览器定时刷新
具体实现 ↑
windows计划任务 ↑
PHP很少在win服务器上跑,具体实现也不再深究,看网上实现的原理大概是写bat脚本,然后让window任务添加执行这个bat脚本,具体可以参考:http://www.cnblogs.com/whoknows/articles/2228577.html
linux 的脚本实现 ↑
这里主要使用到crontab这个命令,
使用方式?:
crontab?? filecrontab [ -u user ] [ -u user ] { -l | -r | -e }
说明?:
crontab?是用来让使用者在固定时间或固定间隔执行程式之用
使用crontab写shell脚本,然后让PHP调用shell,这个是利用linux的特性,应该还不算PHP自身语言的特性
可以参看:http://www.centos.bz/2011/07/php-cron-job-linux-crontab/
PHP实现定时执行计划任务 ↑
使用php让浏览器刷新需要解决几个问题
- PHP脚本执行时间限制,默认的是30m 解决办法:set_time_limit();或者修改PHP.ini 设置max_execution_time时间(不推荐)
- 如果客户端浏览器关闭,程序可能就被迫终止,解决办法:ignore_user_abort即使关闭页面依然正常执行
- 如果程序一直执行很有可能会消耗大量的资源,解决办法使用sleep使用程序休眠一会,然后在执行
PHP定时执行的代码:
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 do{ ??? include('config.php'); if(!defined('PHP_AUTO_RUN') || PHP_AUTO_RUN <= 0) { die('process abort'); }// 通过在config.php中定义一个PHP_AUTO_RUN,在每次执行的时候都来检查config.php,判断是否要继续执行 //这里是你要执行的代码?? ? ??? sleep(PHP_AUTO_RUN);// PHP_AUTO_RUN单位为妙 }while(true);
只要在你的PHP代码中包含了上面的代码,并且执行一次,就可以永久的执行下去(前提是config.php中的PHP_AUTO_RUN大于0)。
欢迎指教
很核心的代码!!
核心秘诀哦!!