写一个你需要的php业务的脚本,然后在服务器上,设置定时任务,执行这个脚本,就行了
php做不到每天定时执行,只有java或者c可以,因为php是不访问页面就不会动得代码,但是有一个方法可以曲线救国
你写一个页面是你要每天定时执行的页面,然后视你的操作系统而言,做定时任务,定时去访问这个页面
如果是windows请使用任务计划功能
如果是linux请使用定时任务Cron,在定时的时候使用curl来访问你那个页面.以下我只贴出linux的解决方案,因为一般服务器都是linux的,windows的大家都会
=========================linux cron 入门 ============================
Linux操作系统定时任务系统 Cron 入门
cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业.由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
你也可以将这个服务在系统启动的时候自动启动:
在/etc/rc.d/rc.local这个脚本的末尾加上:
/sbin/service crond start
现在Cron这个服务已经在进程里面了,我们就可以用这个服务了,Cron服务提供以下几种接口供大家使用:
cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
比如说root查看自己的cron设置:crontab -u root -l
再例如,root想删除fred的cron设置:crontab -u fred -r
任务调度的crond常驻命令
crond 是linux用来定期执行程序的命令.当安装完成操作系统之后,默认便会启动此任务调度命令.crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作.
①.、linux任务调度的工作主要分为以下两类:
*系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
*个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置.
②crontab命令选项:
-u指定一个用户,
-l列出某个用户的任务计划,
-r删除某个用户的任务,
③cron文件语法:
? ?分? ?小时? ?日? ? ? 月? ? ? 星期? ?命令
④记住几个特殊符号的含义:
? ?"*"代表取值范围内的数字,
? ?"/"代表"每",
? ?"-"代表从某个数字到某个数字,
? ?","分开几个离散的数字
第一段:任务调度设置文件的写法
具体格式如下:
? Minute Hour Day Month Dayofweek? ?command
? 分钟? ?小时? ?天? ?月? ? ? 天每星期? ? ? 命令
每个字段代表的含义如下:
Minute? ? ? ? ? 每个小时的第几分钟执行该任务
Hour? ? ? ? ? ?每天的第几个小时执行该任务
Day? ? ? ? ? ?每月的第几天执行该任务
Month? ? ? ? ? 每年的第几个月执行该任务
DayOfWeek? ?每周的第几天执行该任务
Command? ? ? 指定要执行的程序
在这些字段里,除了"Command"是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定.对于不指定的字段,要用"*"来填补其位置.
举例如下:
第二段:新增调度任务
新增调度任务可用两种方法:
? ?1、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出.
第三段:查看调度任务
? ?crontab -l //列出当前的所有调度任务
? ?crontab -l -u jp? ?//列出用户jp的所有调度任务
第四段:删除任务调度工作
? ?crontab -r? ?//删除所有任务调度工作
第五段:任务调度执行结果的转向
SHELL=/bin/bash?
PATH=/sbin:/bin:/usr/sbin:/usr/bin?
MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号?
HOME=/ //使用者运行的路径,这里是根目录?
# run-parts?
01? ?*? ?*? ?*? ?*? ?root run-parts /etc/cron.hourly? ? ? ?//每小时执行/etc/cron.hourly内的脚本?
大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了
例如:? ? ? ?1、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出.
PHP定时执行的三种方式实现
具体实现
①.、windows计划任务
PHP很少在win服务器上跑,具体实现也不再深究,看网上实现的原理大概是写bat脚本,然后让window任务添加执行这个bat脚本.
②.、linux 的脚本实现
这里主要使用到crontab这个命令,
使用方式 :
复制代码 代码如下:crontab filecrontab [ -u user ] [ -u user ] { -l | -r | -e }
说明 :
crontab是用来让使用者在固定时间或固定间隔执行程式之用
使用crontab写shell脚本,然后让PHP调用shell,这个是利用linux的特性,应该还不算PHP自身语言的特性
③.、PHP实现定时执行计划任务
使用php让浏览器刷新需要解决几个问题
如果程序一直执行很有可能会消耗大量的资源,解决办法使用sleep使用程序休眠一会,然后在执行
PHP定时执行的代码:
测试的时候发现这个效率并不是很高.
总结:
个人感觉PHP定时执行任务的效率不是很高,建议关于定时执行任务的工作还是交给shell来做吧.
刚学php的话,要多翻看手册.框架的话,我觉得Yii 框架还不错.快速开发,基本上框架都可以实现,要不然也不会有框架.选择一个框架,一个是看学习曲线,是否容易上手,二是看框架的生命力,是不是有团队在维护,是否一直有持续的开发,还有就是比较主观的,看自己是不是喜欢,呵呵.
另外,oschina 上有很多开源软件,你可以多看看,里面就有很多关于php的东西.
这个功能用服务器上面的定时任务做吧,
非得用php也可以做,使用
set_time_limit(0);
ignore_user_abort(true);
写一个死循环,sleep(1),每秒执行一次,具体业务逻辑你自己写,建议这个php程序,依赖一些外部数据来维持,每执行一次,然后记录执行次数到数据库,或者文件里,每次执行读取这个执行次数记录,用来控制程序的执行个数(因为这个程序算是永久进程,除非服务器重启了),除了控制执行次数,也要增加一个文件,数据库记录,来记录一个状态,每次程序执行同时去检查这个状态,如果是1,则执行,如果是0则程序终止,并且前面的执行次数-1,.这样就可以手动结束这些永久php进程了,同时也可以写一些日志,来观察程序的运行状况
以上就是土嘎嘎小编为大家整理的真的不能再l做php任务的吗相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!