定时任务最好的方法是用linux系统的加护任务来写,你是虚拟主机那无法用这个法子,你可以写前台访问触发的法子,把代码写到页面。
大家好,今天小编关注到一个比较有意思的话题,就是关于虚拟主机php定时任务的问题,于是小编就整理了5个相关介绍虚拟主机php定时任务的解答,让我们一起看看吧。
文章目录:
一早升般都是用linux设置定时任务的crontab指令
1.查看定时任务是否开陆手老启 service crond status
2.开启关闭 service crond start / stop
3.crontab -e 设薯链置定时任务 例:crontab -e */30 * * * * /usr/bin/php /usr/share/nginx/html/demo.php
借助linux的crontab
# crontab -e
添加燃慧
00 * * * * /home/xxx/test.php(指定路径)
从左到右依次为 [分钟] [小时] [每月的某一天] [每年的某一月] [每周的某一天闷指] [需要执行的命令的路径]
00 2 * * * /home/xxx/test.php
比如这个就是凌晨两点自动执行/home/xxx目皮罩答录下的test.php
借助crontab来编写;
定时任务最好的悔春哪方法是用linux系统的加护任森滑务来写,你是虚拟主机那无碧码法用这个法子,你可以写前台访问触发的法子,把代码写到页面,判断时间段如果是在设置的时间段就执行。
原帖由
于
2009-2-7
22:15
发表
[i][/url]PHP必须是有访问才能被解析,宏配穗但是像DZ的计划任务是一种曲线的方法我不过多描述,大致如此:1.设定一个执行时间戳,存入缓存或者数据库2.当页面执行的蔽卜时候,判断当前时间戳卖高是否大于缓存或数据库中的时间戳,如果
...
[/b]岂不是每次都要查询数据库
原帖由
于
2009-2-7
22:49
发表
[i][/森巧url]PHP不能自动执行这是大家知道的。其实这种方法和在你设定戚闷时间执行是一个效果,如果在你设定时间后到有第一次访问之前没有任何一次访问,那么执行不执行都是没有效果产生的。因高春弯为PHP是产生东西给人看的,在人看的时候
...
[/b]那要怎么做?我需要的是到某一时刻执行。而不是每隔一端时间去执行!
PHP必须是有访问才嫌搭告能被解析,但是像DZ的计划枝物任务是一种曲线的方法我不过多描述,大致如此:1.设定一个执行时间戳,存入缓存或者数据库2.当页面执行的时候,判断当前时间戳是否大于缓存或数据库芹明中的时间戳,如果大于,则执行相关的语句,否则跳过。
php定时执行任务的几个方法(网上搜集,未验证)1.
Linux下crontab,
windows下计划任务
2.
找个被频繁调用的网页,
里面加上一个检测代码
3.
set_time_limit
(0);
ignore_user_abort(true);4.
用一台机器开着页面,使用AJAX完成这个
定时任务
(我自己添加的,觉得也算是一种方法)由于没有管理权限,方法1不靠谱;方法2的前提是必须有大量的用户群体;方法3可以一试,但是服务器一旦重启就会失效。方法4,时间可能不是慧衡很精确拍轿,而且客户端页面一直开启似乎也很难做到前贺做。
一. 简单
<?php
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去
ini_set('memory_limit','512M'); // 设置内存限制
$interval=60*30;// 每隔半小时运行
do{
//ToDo
sleep($interval);// 等待5分钟
}
while(true);
二. 简单 可控型
config.php
<?php
return 1;
?>
cron.php
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60*30;// 每隔半小时运行
do{
$run = include 'config.php';
if(!$run) die('process abort');
//ToDo
sleep($interval);// 等待5分钟
}
while(true);
三. 简单 改进型
<?php
$time=15;
$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
/*
function
*/
sleep($time);
file_get_contents($url);
?>
写好php脚本,然后使用linux的crontab定时执行它
如果能使用主机上的计划任务就更好。
如果不能,就通过写一个全局计时器,通过用户访问PHP页面来族扮触发。
这是根据B/S软件模型来决定的,散漏PHP代码一般不会主动执行,只会被动地等待用户访问后执行,所以你可以每次被访问时检查是否到兆掘灶达设定的时间点,如果到了就执行保存事件一次,并把全局的另外一个条件(如将结果保存在磁盘上,下次检查是否有这个文件)设为真,下次就不会再执行。
纯手打,仅提供一个思路~
<?php
ignore_user_abort(); /纯碰物/ 在后台运行
set_time_limit(0); // 不停地运行
$interval=30; //吵迟 设置做液定时值
do{
//做你要做的事情
sleep($interval); // 等侍
}while(true);
?>
为啥不做一个shell脚本,在规定时间内触发,在php中写一个函数并且其中与shell做一个对接
PHP定时执行的三种方式实现
1、windows 的计划任务 2、linux的脚本程序 3、让web浏览器定时刷新
具体实现
1、windows计划任务
PHP很少在win服务器上跑,具体实现也不再深究,看网上实现的原简物型理大蚂败概是写bat脚本,然后让window任务添加执行这个bat脚本。
2、linux 的脚本实现
这里主要使用到crontab这个命令,
使用方式 :
复制代码 代码如下:crontab filecrontab [ -u user ] [ -u user ] { -l | -r | -e }
说明 :
crontab是用来让使用者在固定时间或固定间隔执行程式之用
使用crontab写shell脚本,然后让PHP调用shell,这个是利用linux的特性,应该还不算PHP自身语言的特性
3、PHP实现定时执行计划任务
使用php让浏览器刷新需要解决几个问题
PHP脚本执行时间限制,默认的是30m 解决办法:set_time_limit();或者修改PHP.ini 设置max_execution_time时间(不推荐)
如果客户端浏览器关闭,程序可能就被迫终止,解决办法:ignore_user_abort即使关闭页面依然正常执行
如果程序一直执行很有可能会消耗大量的资源,解决办法使用sleep使用程序休眠一会,然后在执行
PHP定时执行的代码:
<?php ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(3000);// 通过set_time_limit(0)可以让程序无限制的执行下去 $interval=5;// 每隔5s运行 //方法1--死循环 do{ echo '测试'.time().'<br/>'; sleep($interval);// 等待5s }while(true); //方法2---sleep 定时执行 require_once './curlClass.php';//引入文件 $curl = new httpCurl();//实例化 $stime = $curl->getmicrotime(); for($i=0;$i<=10;$i++){ echo '测试'.time().'<br/>'; sleep($interval);// 等待5s } ob_flush(); flush(); $etime = $curl->getmicrotime(); echo '<hr>'; echo round(($etime-stime),4);//程序执行时间
测试的时候发现这个效率并不是很高。
总结:
个人感觉PHP定时执行任务的效率不是很高,建议关于定时执行任务的工作还是交给拦猜shell来做吧。
到此,以上就是小编对于虚拟主机php定时任务的问题就介绍到这了,希望介绍关于虚拟主机php定时任务的5点解答对大家有用。
服务器购买/咨询热线:15637009171或15617636856
本文链接:https://www.sqxnmj.com/jishuzhichiyuweihu/10350.html