问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

laravel\app\console\command怎么用

发布网友 发布时间:2022-04-20 14:11

我来回答

1个回答

热心网友 时间:2023-07-27 23:09

场景
比如使用redis作为计数器,然后在每天的凌晨将计数保存到MySQL
比如定时执行一些批量的任务
扩展artisan的command
例子:批量将文字题目生成为图片
artisan command:make QuestionCommand
# app/command/QuestionCommand.php

生成php文件之后,首先需要修改name为你的命令
protected $name = 'question:gen';

getArguments, getOptions 分别为获取参数和选项的值
getArguments // command arg1 arg2
getOptions // command --opt1=val1 --opt2=val2
fire // 执行命令的时候具体要做的事情

较为完整的例子
<?php

use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;

class QuestionCommand extends Command {

/**
* The console command name.
*
* @var string
*/
protected $name = 'question:gen';

/**
* The console command description.
*
* @var string
*/
protected $description = '生成question图片';

/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}

/**
* Execute the console command.
*
* @return void
*/
public function fire()
{
$questions = $this->option('all') ? Question::all() : Question::whereThumb(0)->get();
// 初始化markdown解析引擎
$ciconia = new Ciconia\Ciconia();
$ciconia->addExtension(new Ciconia\Extension\Gfm\FencedCodeBlockExtension());
$ciconia->addExtension(new Ciconia\Extension\Gfm\TaskListExtension());
$ciconia->addExtension(new Ciconia\Extension\Gfm\InlineStyleExtension());
$ciconia->addExtension(new Ciconia\Extension\Gfm\WhiteSpaceExtension());
$ciconia->addExtension(new Ciconia\Extension\Gfm\TableExtension());
foreach ($questions as $question) {
$item = array(
'id' => $question->id,
'absPath' => public_path('upload/question/' . $question->id . '.png'),
'relPath' => 'question/' . $question->id . '.png',
'question' => $ciconia->render($question->question),
);
Queue::push('code2png', $item, 'code2png');
$this->info('Question ' . $question->id . ' has been added to the queue.');
}
}

/**
* Get the console command arguments.
*
* @return array
*/
protected function getArguments()
{
return array(
// array('example', InputArgument::REQUIRED, 'An example argument.'),
);
}

/**
* Get the console command options.
*
* @return array
*/
protected function getOptions()
{
return array(
array('all', null, InputOption::VALUE_OPTIONAL, '全部重新生成', null),
);
}

}

需要在app/start/artisan.php里面添加下面一行才会生效
// 4.0
$artisan->add(new QuestionCommand);
// 4.1
Artisan::add(new QuestionCommand);

命令行中这样执行
artisan question:gen --all=1

如果要在Controller里面调用,可以这样
Artisan::call('question:gen', array('--all' => 1));
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
福如东海终身寿险(A款)(分红型)能退多少钱 我买的新华人寿保险福如东海A型,但是想退了。 杭州樱花日语学校的学习效果如何得到管理与跟踪? 枣子不能与什么一起吃 枣子和什么食物相克 枣子和什么相克 枣子跟什么不能一起吃 电风扇带不动风叶拿掉风叶能转是怎么回事 嵌入式学习首先要学什么基础 学习嵌入式的基础是什么 怎么用console进行渗透测试 PHP:如何在控制台输出内容呢?求解. 如何使用app console on device 怎么优雅的输出PHP调试信息 php要怎么设置浏览器的console就不显示东西了 如何在windows下拥有php console - 技术问答 PHP:如何在控制台输出内容呢?求解 php console chrome插件 怎么用 php怎么console控制台上 phpstorm console窗口怎么使用 我哥们叫我帮他保管算命先生给的符 这个符按他的说... 为什么广西北部湾银行转不了账?(用USBkey,错误... 亚洲和欧洲的分界线按由北向南依次的顺序排列分别... 堀北真希中“堀”的读音 我的拼音加加力按jue音弄不出来 按上北下南、左西右东的方位,将敦煌城、党河口、... 【急问在线等】河北师范大学汇华学院的西院,北院... 隋朝大运河连接了五大河流,按南到北的顺序一次应... 宋朝五大名窑按地理位置由南到北的顺序 在地图上找到这几个城市的位置,并将它们按从北到... 先秦两汉,元代,明代,清代,宋代,隋唐,魏晋南... 如何使用内建的 PHP Web 服务器 phpstorm怎样运行单个php文件 php如何实现websocket php怎么调用elasticsearch 在记事本里写好的PHP代码 要怎样运行 php binconsole serverrun什么用 怎样调用app\console\commands中php文件 如何在linux控制台运行php程序,就像运行shell脚本... phpstorm,有谁用过,如何直接在控制台中调试不用每... 理光速印机故障D01 理光速印机为什么总是卡纸? 理光速印机,经常出现E24代码,清理了几次,暂时还... 理光速印机制版出墨道是什么原因? Priport DX 2432C 理光速印机缺版纸故障如何清除(... 理光速印机 理光4054速印机不能移动上墨 理光速印机用起来怎么样? 理光速印机故障灯BA灯亮,关机重启后正常 如何清洗理光DX2432c速印机的油墨探针,需注意什么? 理光速印机故障T991303