精华内容
下载资源
问答
  • 由于开发使用公司电脑,不能使用Mac,如果要和生产环境同步,就得使用虚拟机,Docker , Vargrant 等其他 第三方软件。内存又有限,运行起来... Linux 的定时任务在windows 不能使用,只能使用 windows 的 计划任务...

    由于开发使用公司电脑,不能使用Mac,如果要和生产环境同步,就得使用虚拟机,Docker , Vargrant 等其他 第三方软件。内存又有限,运行起来非常吃力,真是让人头痛,
    但是除了运行环境是 windows 之外,又想用 定时任务。如果定时任务在windows 可以使用,就方便许多了。
    Linux 的定时任务在windows 不能使用,只能使用 windows 的 计划任务。

    简单搜索了一下,结合前人的经验,总结总结。

    系统及软件配置

    本文使用 软件及各版本 windows 7 , laravel-lumen 5.5.2 . DOS 为系统自带版本未进行过修改。
    laravel 的安装使用请自行 Google or Baidu.

    原理

    windows 和 Linux 配置文件的方式是类似的
    Linux 使用 crontab -e 来 配置 调度的时间,所用PHP 版本,指定执行文件路径。
    windows 基本也是分这几步。

    文件配置

    建立指定要执行的批处理 归类文件夹。
    博文 建立 的为 C:\Users\admin\Desktop\开发\bat,根据自己的习惯修改。
    在改文件夹下建立自己要处理的批处理文件。如图所示

    这里写图片描述

    批处理文件编写

    本文以 crontab.bat 为例。批处理文件请编写在上文建立的文件夹下。

    这里写图片描述

    windows计划任务

    打开计划任务

    taskschd.msc

    这里写图片描述

    设置计划任务

    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

    点击完成。 点击下图触发器。

    这里写图片描述
    这里写图片描述
    这里写图片描述

    点击确定,即可进行任务调度。

    解决一直弹窗问题

    如此设置之后,会出现每分钟调用任务调度的时候,就会闪一下弹窗,真的是一个头两个大。

    这里写图片描述
    如此、这般,操作之后,就可以解决了。
    这里写图片描述
    这里写图片描述

    会回到下图的选项,继续点确定

    这里写图片描述

    下图就是设置后的界面,继续点击 确定,让刚才的设置生效。

    这里写图片描述
    此处的目的,就是设置选项为不管用户是否登录,都要运行,也可选择其他用户后选择这个选项。
    修改完毕。

    这里写图片描述

    总结。

    无非就是一些操作性的东西居多。不管是Linux 还是 windows 还是一些其他的技术,要多看多学习。存在即合理,不管什么样的操作系统,都是可以做开发的。

    展开全文
  • laravel 任务调度参考 https://laravel-china.org/docs/laravel/5.5/scheduling/1325 这是linux下的任务调度配置,不过Windows下的配置区别也不大 原理 windows 和 Linux 配置文件的方式是类似的  Linux 使用 ...

    laravel 任务调度参考

    https://laravel-china.org/docs/laravel/5.5/scheduling/1325   这是linux下的任务调度配置,不过Windows下的配置区别也不大

    原理

    windows 和 Linux 配置文件的方式是类似的 
    Linux 使用 crontab -e 来 配置 调度的时间,所用PHP 版本,指定执行文件路径。 
    windows 基本也是分这几步。

    步骤1 建立bat文件

    在自己指定目录下创建bat文件,例如我的C:\dev\crontab.bat, 写入

    f:
    cd laravel-projects\testLaravel   
    
    D:\php\xampp\php\php.exe artisan schedule:run 1>> NUL 2>&1

    laravel项目目录和php安装环境根据自己的修改。

    步骤2 建立Windows计划任务

    打开计划任务

    è¿éåå¾çæè¿°

    设计计划任务

    è¿éåå¾çæè¿°

    è¿éåå¾çæè¿° 

    è¿éåå¾çæè¿°

    è¿éåå¾çæè¿°

    è¿éåå¾çæè¿°

     

    è¿éåå¾çæè¿°

    è¿éåå¾çæè¿°

    è¿éåå¾çæè¿°

    è¿éåå¾çæè¿°

    步骤3 解决一直弹窗问题

    è¿éåå¾çæè¿°

    è¿éåå¾çæè¿°

    è¿éåå¾çæè¿°

    è¿éåå¾çæè¿°

    此处的目的,就是设置选项为不管用户是否登录,都要运行,也可选择其他用户后选择这个选项。 
    修改完毕。

    展开全文
  • laravel任务调度

    2019-11-06 17:26:08
    laravel任务调度 替代linux的cron来管理定时任务。 一、app/Console/Kernel.php <?php namespace App\Console; use App\Console\Commands\Read3DepartRank; use App\Console\Commands\Read3SuccessStat; use ...

    laravel任务调度

    替代linux的cron来管理定时任务。

    一、app/Console/Kernel.php

    <?php
    
    namespace App\Console;
    
    use App\Console\Commands\Read3DepartRank;
    use App\Console\Commands\Read3SuccessStat;
    use App\Console\Commands\Read3ActivityBookOver;
    use Illuminate\Console\Scheduling\Schedule;
    use Illuminate\Support\Carbon;
    use Laravel\Lumen\Console\Kernel as ConsoleKernel;
    class Kernel extends ConsoleKernel
    {
        protected $commands = [
            Read3SuccessStat::class,
            Read3DepartRank::class,
            Read3ActivityBookOver::class,
        ];
    
        protected function schedule(Schedule $schedule)
        {
            /**
             * 任务只运行在一台服务器上
             * 避免任务重复(默认24小时)
             * -- 每分钟
             */
            $schedule->command('Read3SuccessStat')->everyMinute()->runInBackground()->withoutOverlapping();
    
            /**
             * 任务只运行在一台服务器上
             * 避免任务重复(默认24小时)
             * -- 每五分钟
             */
            $schedule->command('Read3DepartRank')->everyFiveMinutes()->runInBackground()->withoutOverlapping();
    
            /**
             * 任务只运行在一台服务器上
             * 避免任务重复(默认24小时)
             * -- 每五分钟
             */
            $schedule->command('Read3ActivityBookOver')->everyFiveMinutes()->runInBackground()->withoutOverlapping();
        }
    }
    

    二、app/Console/Commands/Read3SuccessStat.php

    <?php
    
    namespace App\Console\Commands;
    
    
    use App\RepositoryInterface\Read3RepositoryInterface;
    use Illuminate\Console\Command;
    
    class Read3SuccessStat extends Command
    {
        /**
         * The name and signature of the console command.
         *
         * @var string
         */
        protected $signature = 'Read3SuccessStat';
    
        /**
         * The console command description.
         *
         * @var string
         */
        protected $description = '每分钟排查一下';
    
        private $_readRepository;
    
        /**
         * Create a new command instance.
         *
         * @return void
         */
        public function __construct(Read3RepositoryInterface $readRepository)
        {
            parent::__construct();
            $this->_readRepository = $readRepository;
        }
    
        /**
         * Execute the console command.
         *
         * @return mixed
         */
        public function handle()
        {
            $this->_readRepository->read3SuccessStat();
        }
    }
    

    三、app/RepositoryInterface/Read3RepositoryInterface.php

    <?php
    
    namespace App\RepositoryInterface;
    
    interface Read3RepositoryInterface
    {
    	public function read3SuccessStat();
    }
    
    四、接口的实现
    app/Repository/Read3Repository.php
    
    <?php
    namespace App\Repository;
    
    use Illuminate\Support\Facades\Log;
    class Read3Repository implements Read3RepositoryInterface
    {
    	public function read3SuccessStat(){
    		// 需要设置
    		set_time_limit(0);
            ini_set('memory_limit', '2048M');
    		Log::info('here');
    	}
    }
    

    五、测试
    CMD

    d:
    cd D:\dev\php\magook\trunk\server\dbserverWorkSpace\opDbserver
    php artisan schedule:run
    

    默认laravel会将输出重定向到 NUL,也就是看不到,当然可以设置到其他地方。

    六,线上Linux
    设置Crontab,是系统每分钟调一次这个命令

    * * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
    

    注意的点:
    1、laravel任务调度的原理是,每分钟检查一次所有的任务是否达到执行时间,如果达到了就放入执行队列执行,而且,实际上是顺序执行的,并不是并行的,这点和Linux自带的cron不同,显然这样是有问题的,我们需要的是并行的,因为如果上一个任务执行时间比较长,那么后面的任务就不是按时执行了,因此Laravel提供了任务以后台进程的方式来执行的设置,这样每个任务都同时独立运行,因此我们要加上runInBackground()方法 。当然,在本地windows调试的话可以不用加了。

    2、定时任务最大的弊端是间隔时间的设置,因为不好精确知道脚本的执行时间,设置短了,可能同一个任务不止一个进程在跑,这样会导致数据混乱,时间设置太长了,又没有充分利用系统资源,于是Laravel提供了一个加锁的机制,确保同一个任务不会被多个进程执行,因此我们要加上withoutOverlapping()方法。

    展开全文
  • 看完我这篇laravel任务调度的入门教程:URL 其实这个任务输出没什么好说的,在handle方法写打印就可以了。print、echo等,laravel的dd、dump。return是不行哦,因为return是返回,不是打印输出。 本人只尝试过...

    附上laravel5.4任务调度的任务输出文档:url

    看完我这篇laravel任务调度的入门教程:URL

    其实这个任务输出没什么好说的,在handle方法写打印就可以了。print、echo等,laravel的dd、dump。return是不行哦,因为return是返回,不是打印输出。

    本人只尝试过print,其他的没试过,小伙伴可以自己试试。

    在TestConsole.php写上

    public function handle()
    {
    		
        $a = 1;
        if($a)
        {
    	    $b = '成功';
    	}else{
    		$b = '失败';
    	}
    	print "\nYiErSan";
    	print("\n这是我写的log".time().$b);
    }

    在Kernel.php写上

    $schedule->command('testconsole')->everyMinute()->appendOutputTo('test.txt');

    这里的test.txt说明一下,如果有这个文件,则会在尾部添加你在TestConsole.php输出的内容,没有此文件会帮你创建。并写入输出的内容。test.txt是在项目的根目录哦,不知道laravel项目的根目录?就是有app、bootstrap、config、config、public、resources、routes等文件夹的地方,就是你的根目录。

    展开全文
  • laravel 任务调度

    2018-01-24 17:28:36
    当我第一次听到任务调度的时候, 我发现这个概念完全令人折服,正是因为这个激励我在PHP中实现了它. 同时我发现任务调度真正非常的令人惊叹:在令人敬畏的代码和一大堆乱代码之间只有一线之隔,我认为任务调度恰好处在这...
  • Laravel任务调度

    2018-09-02 17:19:10
    下面介绍一个Laravel任务调度使用实例,至于相关的方法请参考:http://laravelacademy.org/post/8484.html 1. make:command 生成任务 php artisan make:command MigrateData 执行上述命令后,会在Console目录...
  • Laravel 任务调度

    千次阅读 2019-12-27 11:39:51
    计划任务定期地在系统后台自动运行;即定时任务 2.学习/操作 1.介绍 TBD 2.操作 TBD 后续整理 ... 3....
  • Laravel 任务调度(定时任务)遇到的坑

    千次阅读 2020-09-18 17:52:44
    Laravel 任务调度(定时任务)遇到的坑 记录一下自己在第一次使用laravel的调度任务遇到的坑 这里做一个简单任务调度,我这里的需求是这样的,需要自动调用控制器的一个方法, 需要每天定时发送公众号模板消息,那么我...
  • 项目场景: laravel 数据库备份时任务调度重复执行 问题描述 在任何的一个项目中数据库里面的数据都是是要定时的进行备份来以防万一服务器出现问题时数据丢失。 在laravel 项目中我使用任务调度来实现数据库定时...
  • 但是这种方式很快就会变得不友好,因为这些任务调度不在源代码中,并且你每次都需要通过 SSH 链接登录到服务器中才能增加 Cron 入口。 Laravel 命令行调度器允许你在 Laravel 中对命令调度进行清晰流畅的定义。且...
  • Cron 是 UNIX、SOLARIS、LINUX 下的一个十分有用的工具,通过 Cron 脚本能使计划任务定期地在系统后台自动运行。这种计划任务在 UNIX、SOLARIS、LINUX下术语为 Cron Jobs。Crontab 则是用来记录在特定时间运行的 ...
  • laravel任务调度测试

    千次阅读 2017-06-09 16:11:09
    这里是在Centos7做的试验,在下面步骤开始之前你需要准备的东西:LAMP/LNMP环境,一个能用的laravel项目。下面是简单的两步骤: 1.添加cron条目(下面操作都是在root模式下,请先su进root模式再操作) 在终端输入 ...
  • Laravel任务调度定时任务

    千次阅读 2017-07-15 10:07:12
    日常开发中可能需要定时去执行一些东西,例如定时检查数据库状态是否更新,定时...* * * * * php 项目的路径/artisan schedule:run >> /dev/null 2>&1* 就是代表 (分 时 日 月 周) 注意:/usr/local/bin/php 这个是ph
  • laravel 任务调度

    2019-05-27 18:06:51
    背景:在实际工作业务中,经常要用到异步任务的方式来进行相关(耗时)任务的处理,这时可能需要采取定时任务的方式来进行。linux自带的crontab定时器...laravel自带的schedule任务调度能很好解决这个痛点。 larav...
  • 通过服务器定时任务 调用 laravel命令或方法1.在app\Console\Commands 下创建定时任务所要进行的操作创建命令: php artisan make:console test$signature = “testCommand”; 这里的签名,在kernel.php任务命令中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 973
精华内容 389
关键字:

laravel的任务调度php