在PHP中使用计划任务

原创 2016年08月31日 09:34:18

 要让程序按计划自动执行,如果是自己的服务器,那当然推荐使用操作系统本身的计划任务(例如linux下的cron),这样不占用资源。但如果使用的是虚拟主机没有服务器的权限,那我们还可以使用PHP的计划任务,总结一下有以下几种方式。

        1.使用ignore_user_abort函数,如果使用代码ignore_user_abort(true),表示可以或略用户终止请求,如果用户执行某个脚本后停止请求(比如关掉浏览器),则脚本还会继续执行直到执行完毕,我们可以利用这一点让程序无限执行下去。例如:

  1. <?php
  2. ignore_user_abort(true); //忽略用户终止请求
  3. set_time_limit(0); //不显示脚本执行时间
  4. //以下做任何操作 不用担心时间问题
  5. while(true){
  6.         file_put_contents('./b.txt',date('s'));
  7.         sleep(30);
  8. }
  9. ?>
        当然上面的做法是比较耗资源的,如果要这样做一定要谨慎,另外这个脚本必须做权限控制只能让管理员来执行,并且只执行一次,不能让用户来执行到,否则将会发生多个脚本同时执行的情况。

        2.使用图片标签来请求计划任务,例如在页面中放入代码,这样页面一执行就会发起对cron.php的请求,一些开源产品(例如ECSHOP)就是使用的此方式,我们可以在cron.php中加入时间判断,符合条件的请求才会执行,而不是每次访问页面都执行。这样做的弊端是,每次用户访问都会执行cron.php,并且如果cron.php中的程序没有执行完时页面会显示还在加载,给用户一种页面没有完全打开的假象。

        3.在页面执行时使用fsockopen来请求cron.php,并且在请求之后关闭连接,只要我们在cron.php中设置了ignore_user_abort(true),即使关闭了连接脚本也会执行完毕。这个和第二种方式类似,但好处是如果cron.php执行时间较长用户也不会感觉网页没有加载完毕。代码:

        

  1. <?php
  2.   $url 'http://您的域名/cron.php';
  3.   $urlarr     parse_url($url);
  4.   
  5.   $http $urlarr['scheme'];
  6.   
  7.   if($http == "https") {
  8.    $transports "ssl://";
  9.    $urlarr["port"] = "443";
  10.   } else {
  11.    $transports "tcp://";
  12.    $urlarr["port"] = "80";
  13.   }
  14.   $fp fsockopen($transports $urlarr['host'],$urlarr['port'],$errno,$errstr,$time_out 30);
  15.   if(!$fp) {
  16.    die("ERROR: $errno - $errstr\n");
  17.   } else {
  18.    fputs($fp"POST ".$urlarr["path"]." HTTP/1.1\r\n");
  19.    fputs($fp"Host: ".$urlarr["host"]."\r\n");
  20.    fputs($fp"Connection: close\r\n\r\n"); 
  21.    fclose($fp);
  22.   }
  23. ?>
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Windows Server 2008中使用计划任务定时执行BAT bat进行PHP脚本的执行

一、首先进行任务管理器设置  每隔1分钟执行.BAT 文件配置 首先Windows Server 2008不同于其他服务器操作系统和Windows Server 2003有着很大的区别,计划任务的名...

PHP计划任务:如何使用Linux的Crontab执行PHP脚本

我们的PHP程序有时候需要定时执行,我们可以使用ignore_user_abort函数或是在页面放置js让用户帮我们实现。但这两种方法都不太可靠,不稳定。我们可以借助Linux的Crontab工具来稳...

计划任务 定时执行 php

  • 2010-09-06 18:58
  • 47KB
  • 下载

win7下利用计划任务定期执行php文件

一、安装php并设置系统环境变量,确保在控制台下输入"php -v"可以看到php的版本信息 二、创建测试脚本 在E:\winplan\(目录随意指定,但要保持统一)下创建文件test.p...

php定时计划任务的实现原理

以前对se特别感兴趣,但是自己又不会java,lucene等搜索引擎开发工具,于是不断挖掘php的功效。 最后发现php也可以做抓取,并且原理很易:直接获取页面源文件,然后通过正则或字符串的参照截取...

php定时计划任务介绍

以前对se特别感兴趣,但是自己又不会java,lucene等搜索引擎开发工具,于是不断挖掘php的功效。最后发现php也可以做抓取,并且原理很易:直接获取页面源文件,然后通过正则或字符串的参照截取来获...

PHP执行计划任务[linux]

在Linux的终端下实现守护进程,可以使用crontab来计划PHP脚本执行。 crontab命令的功能是在一定的时间间隔调度一些命令的执行。   crontab 使用方法: crontab [...

php定时计划任务介绍

最近帮朋友做一个小说采集程序,虽然现在可以实现整部小说全部采集的功能,但是却不能够自动的去采集.需要人工手动执行.所以就搜索有关这方面的资料,没想到PHP还真的可以实现,可以自动定时获取,那么人工运行...

PHP:ignore_user_abort()+set_time_limit(0)+sleep($interval)实现计划任务

PHP:ignore_user_abort()+set_time_limit(0)+sleep($interval)实现计划任务
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)