本文实例讲述了支持windows与linux的php计划任务的实现方法。包括了在winows下利用winodows计划任务来操作,还有在linux中利用linux的方法来实现。分享给大家供大家参考。具体实现方法如下:
使用php让浏览器刷新需要解决几个问题:
1.PHP脚本执行时间限制,默认的是30m 解决办法:set_time_limit();或者修改PHP.ini 设置max_execution_time时间(不推荐)
2.如果客户端浏览器关闭,程序可能就被迫终止,解决办法:ignore_user_abort即使关闭页面依然正常执行
3.如果程序一直执行很有可能会消耗大量的资源,解决办法使用sleep使用程序休眠一会,然后在执行
<?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);//程序执行时间
WINDOWS中设置计划任务执行PHP文件
在网上找了些WINDOWS执行PHP的计划任务的方法,有一个写得很全,可惜在我这竟然没通过。最后不得不综合各门派的方法,才能在我这运行成功。
1、写一个PHP程序,命名为test.php,内容如下所示:
<?php $fp = fopen("test.txt", "a+"); fwrite($fp, date("Y-m-d H:i:s") . " 成功成功了!n"); fclose($fp); ?>
2、新建Bat文件,命名为test.bat,内容如下所示:
D:phpphp.exe -q D:websitetest.php
相应目录自己改上
3、建立WINDOWS计划任务:
开始–>控制面板–>任务计划–>添加任务计划
浏览文件夹选择上面的bat文件
设置时间和密码(登陆WINDOWS的)
保存即可了。
4、over! 可以右键计划任务点“运行”试试
Linux的Crontab执行PHP脚本
一、在Crontab中使用PHP执行脚本
就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本。
每一小时执行myscript.php如下:
# crontab -e 00 * * * * /usr/local/bin/php /home/john/myscript.php
二、在Crontab中使用URL执行脚本
如果你的PHP脚本可以通过URL触发,你可以使用lynx或curl或wget来配置你的Crontab。
下面的例子是使用Lynx文本浏览器访问URL来每小时执行PHP脚本。Lynx文本浏览器默认使用对话方式打开URL。但是,像下面的,我们在lynx命令行中使用-dump选项来把URL的输出转换来标准输出。
00 * * * * lynx -dump http://www.centos.bz/myscript.php
*/5 * * * * /usr/bin/curl -o temp.txt http://www.centos.bz/myscript.php
*/10 * * * * /usr/bin/wget -q -O temp.txt http://www.centos.bz/myscript.php
最后发现php也可以做抓取,并且原理很易:直接获取页面源文件,然后通过正则或字符串的参照截取来获取需要的信息。但是性能上不能和搜索引擎的多线程抓取相比。
实现了上一步之后,又思考着,如果抓取可以自动定时获取,那么人工运行可执行页面也就省下来了。
后来也在一些php开源程序中了解到关于"计划任务"的效果:可以定时运行某程序,比如数据库备份,更新缓存,生成静态页面,生成网站地图等。
最近由于项目需要定时更新远程数据库到本地,网上搜了搜,还真找到了。
ignore_user_abort();函数搭配set_time_limit(0);和sleep($interval);即可实现以上自动更新。
先给出一个基本的范式,其中有个人的测试程序:
<?php ignore_user_abort(); // run script in background set_time_limit(0); // run script forever $interval=30; // do every 15 minutes... do{ $fp = fopen('text3.txt','a'); fwrite($fp,'test'); fclose($fp); sleep($interval); // wait 15 minutes }while(true); ?>
个人感觉PHP定时执行任务的效率不是很高,建议关于定时执行任务的工作还是交给shell来做吧,比较那才是王道。
希望本文所述对大家的C#程序设计有所帮助。
本文向大家介绍php计划任务之ignore_user_abort函数实现方法,包括了php计划任务之ignore_user_abort函数实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php计划任务之ignore_user_abort函数实现方法。分享给大家供大家参考。具体分析如下: PHP 不会检测到用户是否已断开连接,直到尝试向客户机发送信息为止,简单地使用 echo 语句无
分支 开始时间 积极支持截止时间 安全维护截止时间 v4.3.x 2019-2-7 2019-9-30 2019-12-31 v4.4.x 2019-4-15 2020-4-30 2020-7-31 v4.5.x 2019-12-20 2020-12-31 2021-3-31 积极支持 受到官方开发组的积极支持,已报告的错误和安全问题将会立即被修复,并按照常规流程发布正式的版本。 安全维护 仅支持
本文向大家介绍linux下使用crontab实现定时PHP计划任务失败的原因分析,包括了linux下使用crontab实现定时PHP计划任务失败的原因分析的使用技巧和注意事项,需要的朋友参考一下 很多人在linux下使用crontab实现PHP执行定时任务却未能成功,不能生成缓存。本文就linux下使用crontab实现定时PHP计划任务失败的原因做一分析。 一般我们linux定时执行php代码例
我以前有许多 C .exe程序(使用 C Builder XE7 开发)作为计划任务在 Windows 2008 R2 数据中心服务器中运行。这些任务由SYSTEM帐户运行,我以前从未遇到过任何问题。 我最近将这些任务导入到新的Windows 2019数据中心服务器,并在任务计划程序中设置这些任务。使用相同的系统帐户运行任务,但是使用更新的Windows服务器,这些任务现在给我的运行结果是0xC0
我有一些可执行文件要安排在Windows任务调度程序中运行。他们的输出必须在某处看到。通过Windows任务计划程序运行应用程序时,程序的输出将丢失。如何捕获此输出?我做了谷歌搜索,找到了破解方法,改为运行cmd并将输出重定向到日志文件,但我无法将这些信息很好地保存在XML文件中,我应该能够在任务调度程序中注册,因此我需要一种更好的方法。 任何帮助都将不胜感激。
我们有一个Spring Boot应用程序,并有计划的任务。 我们希望在多个服务器上部署我们的应用程序,因此将有多个应用程序实例。 如何将 Spring 配置为仅在指定的服务器上运行计划任务?