我需要在 Laravel 网站上设置一些cron
个工作。似乎首先我必须在shell中运行以下命令才能开始:
php artisan command:make CustomCommand
然而,由于我没有shell访问权限,我唯一的另一种选择是使用Artisan::call
并通过HTTP访问它。语法是这样的:
\Artisan::call( 'command:make',
array(
'arg-name' => 'CustomCommand',
'--option' => ''
)
);
我遇到的问题是我似乎无法找到arg-name
命令的command:make
值。
如果有人提到make
命令的参数名称,或者建议不需要shell访问的替代解决方案,我真的很感激。
答案 0 :(得分:2)
您可以通过创建代表您的命令的类来手动添加它。 cli命令生成下一个文件:
<?php
use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
class Test extends Command {
/**
* The console command name.
*
* @var string
*/
protected $name = 'command:name';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description.';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function fire()
{
//
}
/**
* 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('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null),
);
}
}
将其放在commands
目录中(对于L4,它是app/commands
)。接下来只需在您的app/start/artisan.php
文件中添加自定义命令的绑定:
Artisan::add(new Test);
就是这样。当您不需要触摸服务器的crontab时,这是理想的解决方案。如果您可以从CP访问它,那将是最简单的解决方案。如果您没有这种能力,现在可以设置crontab来运行您的自定义命令。希望这会有所帮助。