首页 » 网站推广 » php准时发送制造技巧_Laravel实现准时宣告责任

php准时发送制造技巧_Laravel实现准时宣告责任

duote123 2024-11-04 0

扫一扫用手机浏览

文章目录 [+]

Laravel官方自带这个功能,须要利用到Linux系统的cronTab功能。
如下链接,好好看看

http://laravelacademy.org/post/8484.html

php准时发送制造技巧_Laravel实现准时宣告责任

1、利用Linux的cronTab功能

php准时发送制造技巧_Laravel实现准时宣告责任
(图片来自网络侵删)

(1)进入Linux做事器环境,命令行输入

crontab -e

这样就直接进入了做事器下的/var/spool/cron/root文件。
如果/var/spool/cron/下还没有root文件,输入上面那个命令就会自动新建root文件了。

(2)前辈入文件编辑模式,在root文件中输入

/usr/local/php/bin/php /opt/xxx/xxx/artisan schedule:run 1>> /dev/null 2>&1

前面第一个目录是php在做事器上的位置,如果不清楚,可以命令行输入which php自行查看然后修正。

第二个目录是你的laravel项目的存放位置,便是artisan文件所在的根目录

2、然后在laravel项目目录下新建任务,命令行输入

php artisan make:command SendTask

然后创造在app/Console/Commands路径下多了一个SendTask.php的文件

自定义这个文件的$signature(等会儿要跟app/Console/Kernel.php文件中的command里面的名称对应,比如我写的是task:send)、$description(对这个任务的描述)、handle()方法中是这个定时任务的紧张逻辑代码。

3、然后修正app/Console/Kernel.php文件

在$commands里要增加刚刚的任务的存放路径;要同时实行多个任务时,将要同时实行的任务的class加入到$commands

protected $commands = [\App\Console\Commands\SendTasks::class,\App\Console\Commands\SendTaskEveryDay::class,\App\Console\Commands\SendTaskEveryWeek::class,

schedule里面是定时实行的核心代码:可以自己直接在里面写要实行的任务的内容,也可以调用新建的command里的任务实行内容。
后面便是解释实行任务的频次。

protected function schedule(Schedule $schedule){// $schedule->call(function () {// Task::create(['title' => '发送定时任务']);// })->everyMinute();//调用artisan// $schedule->command('tasks:send')->hourly();$schedule->command('tasks:send')->cron('0 /2 ');$schedule->command('tasks:everyday')->dailyAt('09:00');

实在到这里已经是可以实行发布定时任务的期待了,但是我希望可以传参到这个定时任务里面去,由于每次的任务内容不一样,须要达到可以自定义的效果。
在这里纠结了良久,还考试测验了修正handle()方法,修正成为handle($data),然后在要发布定时任务的时候调用这个handle()方法,然后将参数通过$data传过来,但是创造一旦handle()里面带参数之后定时任务就不能实行了,详细缘故原由不知道,但是这个思路明显便是错了。

末了走了很多弯路,想到一个办法,不能从外部传参进去,就在方法里面把参数查出来。
我想要的效果便是:新建一个任务,然后这个新建的任务须要每隔1小时自动新建一次。

想到的办理办法便是在handle()方法里面用sql语句或者查询布局器先把新建的那个定时任务查出来,然后将这个任务再新增一次。
暂时能想到的便是这个办法,最少可以达到我想要的效果了。

举两个例子,怎么样写好代码

最经典的算法,献给正在口试道路上的你

如果你现在在口试PHP的道路上,看看口试根本题吧

标签:

相关文章