×

thinkphp设置定时任务

包含thinkphp设置定时任务的词条

admin admin 发表于2023-03-27 08:02:08 浏览48 评论0

抢沙发发表评论

本文目录一览:

ThinkPHP怎么做定时任务

这个功能用服务器上面的定时任务做吧,

非得用php也可以做,使用

set_time_limit(0);

ignore_user_abort(true);

写一个死循环,sleep(1),每秒执行一次,具体业务逻辑你自己写,建议这个php程序,依赖一些外部数据来维持,每执行一次,然后记录执行次数到数据库,或者文件里,每次执行读取这个执行次数记录,用来控制程序的执行个数(因为这个程序算是永久进程,除非服务器重启了),除了控制执行次数,也要增加一个文件,数据库记录,来记录一个状态,每次程序执行同时去检查这个状态,如果是1,则执行,如果是0则程序终止,并且前面的执行次数-1,。这样就可以手动结束这些永久php进程了,同时也可以写一些日志,来观察程序的运行状况-thinkphp设置定时任务

thinkphp6定时任务,php定时器EasyTask

本教程使用的定时任务基于EasyTak,EasyTask官方文档:

(1).安装tp6

(2).安装定时任务composer包

(3).创建命令行处理类文件

会生成文件:tp\app\command\Task.php

将Task.php文件内容修改如下:

(4).配置tp\config\console.php文件

(5).执行命令(windows请使用cmd):

求助Thinkphp定时执行任务怎么搞

就是你把你要更新的数据要发布的 代码 写成 PHP 文件 只要执行这个文件 就发布

这时再在你自己的电脑上设置 个时间计划 定时到了 就访问这个 http PHP 文件 这样不是就发布了吗你看过后很简单吧以后不会可以向我一样经常到后盾人找找相关教材看看就会了,希望能帮到你,给个采纳吧谢谢⊂((≧⊥≦))⊃-thinkphp设置定时任务

thinkphpqueue会重复执行吗

您好,您的问题是thinkphpqueue会重复执行吗?答案是:是的,thinkphpqueue可以重复执行。它可以在指定的时间间隔内重复执行任务,以实现定时任务的功能。可以设置任务的执行时间间隔,比如每隔5分钟执行一次,每隔1小时执行一次等。可以设置任务的执行次数,比如只执行一次,执行两次,执行多次等。可以设置任务的执行时间,比如每天的某个时间点执行,每周的某个时间点执行等。可以设置任务的执行日期,比如每月的某一天执行,每年的某一天执行等。因此,thinkphpqueue可以重复执行任务,以实现定时任务的功能。-thinkphp设置定时任务

thinkphp中怎么实现后台执行任务

ThinkPHP实现定时执行任务的两种方法

1、方法一:v3.2.1

①、ThinkPHP/Library/Behavior/CronRunBehavior.class.php文件

      在这里首先要说的就是这个自动执行任务文件,官方所给的这个文件存在BUG,我是用的是v3.2.1版本,后面的版本是否有改正大家可以尝试一下。

[php] view plain

?php

/**

* =======================================

* Created by WeiBang Technology.

* Author: ZhiHua_W

* Date: 2016/9/22 0005

* Time: 上午 11:12

* Project: ThinkPHP实现定时执行任务

* Power: 自动执行任务

* =======================================

*/

namespace Behavior;

class CronRunBehavior

{

  public function run($params)

  {

      if (C('CRON_CONFIG_ON')) {

          $this-checkTime();

      }

  }

  private function checkTime()

  {

      if (F('CRON_CONFIG')) {

          $crons = F('CRON_CONFIG');

      } else if (C('CRON_CONFIG')) {

          $crons = C('CRON_CONFIG');

      }

      if (!empty($crons) is_array($crons)) {

          $update = false;

          $log = array();

          foreach ($crons as $key = $cron) {

              if (empty($cron[2]) || $_SERVER['REQUEST_TIME'] $cron[2]) {

                  G('cronStart');

                  R($cron[0]);

                  G('cronEnd');

                  $_useTime = G('cronStart', 'cronEnd', 6);

                  $cron[2] = $_SERVER['REQUEST_TIME'] + $cron[1];

                  $crons[$key] = $cron;

                  $log[] = 'Cron:' . $key . ' Runat ' . date('Y-m-d H:i:s') . ' Use ' . $_useTime . ' s ' . "\r\n"; -thinkphp设置定时任务

                  $update = true;

              }

          }

          if ($update) {

              \Think\Log::write(implode('', $log));

              F('CRON_CONFIG', $crons);

          }

      }

  }

}

      此段代码已经将bug修复,大家可以将其复制到 “ ThinkPHP/Library/Behavior/CronRunBehavior.class.php ” 文件中进行保存。

②、tgs.php

      在Application/Common/Conf文件夹中新建tags.php文件,进行标签设置。

[php] view plain

?php

return array(

  //'配置项'='配置值'

  'app_begin' =array('Behavior\CronRunBehavior'),

);

③、config.php

      在Application/Common/Conf文件夹中的config.php文件进行自动运行配置。

[php] view plain

?php

return array(

  /* 自动运行配置 */

  'CRON_CONFIG_ON' = true, // 是否开启自动运行

  'CRON_CONFIG' = array(

      '测试执行定时任务' = array('Home/Index/crons', '5', ''), //路径(格式同R)、间隔秒(0为一直运行)、指定一个开始时间

  ),

);

④、IndexController.class.php

      在Application/Home/Controller/IndexController.class.php文件中进行定时执行任务的编写。

[php] view plain

?php

/**

* =======================================

* Created by WeiBang Technology.

* Author: ZhiHua_W

* Date: 2016/9/22 0005

* Time: 上午 11:20

* Project: ThinkPHP实现定时执行任务

* Power: 自动执行任务方法控制器

* =======================================

*/

namespace Home\Controller;

use Think\Controller;

class IndexController extends Controller

{

  /*

  public function index(){

  $this-show('style type="text/css"*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微软雅黑"; color: #333;} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px }/stylediv style="padding: 24px 48px;" h1:)/h1p欢迎使用 bThinkPHP/b!/p/divscript type="text/javascript" src="" charset="UTF-8"/script','utf-8');-thinkphp设置定时任务

  }

  */

  public function index()

  {

      $contents = file_get_contents("test.txt");

      //每次访问此路径将内容输出,查看内容的差别

      var_dump($contents);

      exit;

      $this-assign("contents", $contents);

      $this-display();

  }

  //定时执行的方法

  public function crons()

  {

      //在文件中写入内容

      file_put_contents("test.txt", date("Y-m-d H:i:s") . "执行定时任务!" . "\r\nbr", FILE_APPEND);

  }

}

       这样定时执行任务我们就写好了,每隔5秒我们访问任何项目的url,然后查看根目录下的test.txt文件就会发现里面的内容变化。

       注意:当你修改间隔时间时会发现没有生效,这是你需要将Runtime/Data文件夹下的缓存文件删除,间隔时间缓存存放在CRON_CONFIG.php文件中。

       纯净的项目文件下载地址: 欢迎大家下载指正。

2、方法2:v3.2.2

      此方法和方法一没有多大的区别。

①、tags.php

      在/Application/Common/Conf目录下新建tags.php文件。(此和方法一处一样)

[php] view plain

?php

return array(

  //'配置项'='配置值'

  'app_begin' =array('Behavior\CronRunBehavior'),

);

②、crons.php

     在/Application/Common/Conf目录下新建crons.php文件。(此处和方法一有区别,注意区分。)

[php] view plain

?php

return array(

  //myplan为我们计划定时执行的方法文件,2是间隔时间,nextruntime下次执行时间

  //此文件位于/Application/Cron/目录下

  'cron' = array('myplan', 2, nextruntime),

);

③、myplan.php

      在/Application/Common/目录下新建 Cron文件夹,里面新建文件myplan.php文件。

[php] view plain

?php

echo date("Y-m-d H:i:s")."执行定时任务!" . "\r\nbr";

      此时我们就可以访问项目的url,然后我们会发现在Application/Runtime/目录下生成了~crons.php文件,文件内容如下:

[php] view plain

?php

  return array (

      'cron' =

          array (

              0 = 'myplan',

              1 = 60,

              2 = 1398160322,

          ),

  );

?

      这样就可以观察结果了!