我知道现在有Laravel 5. *但由于很多原因我使用的是Laravel 4.2
我有一个自定义命令,在fire()方法中,我导入一个文件并在我的数据库中播种信息,所以我的类就像这样
class SeedDataFile extends Command {
protected $name = 'import:file';
public function fire(){
$command = 'mongoimport --db things --collection users --type csv --file file.csv --headerline';
$result = exec($command, $output, $return);
}
}
我想要播种数据的文件,即每12个小时一次(考虑到每12个小时的文件随新数据而变化),但作为用户,我不想在终端中输入命令:< / p>
php artisan import:file
..每12个小时(我只想将新文件上传到我的项目中)。
因此,cron工作是我完成所有工作的地方,但我不想这样做:
crontab -e
并编辑文件
我想在代码中的某个类中设置我的命令的时间表,并且每天自动运行自定义命令直到确定的日期。
这可能吗?或者我必须配置crontab文件?
答案 0 :(得分:1)
你可以看看这个包,描述说它完全符合你的要求
答案 1 :(得分:0)
Laravel 4.2不提供此类功能。事实上,无论您使用哪个版本,您都需要为此功能设置1个cron作业。
较新版本的Laravel确实提供了this functionality,但它们仍然要求您以最高频率为Laravel的命令php artisan schedule:run
设置1个cron作业(Windows上的调度程序)。< / p>
如果您想在代码中安排命令(而不是cron文件),您可以复制Laravel的新版本。
1。你会创建一个&#34; master&#34;命令,让我们称之为TaskSchedulerCommand
并让它说它的签名是php artisan schedule
。
2。你会在TaskSchedulerCommand
上以最高频率创建一个cronjob,如:* * * * * php / path / to / artisan schedule`
3。您可以在TaskSchedulerCommmand