0

Laravelcron Web サイトでいくつかのジョブを設定する必要があります。まず、シェルで次のコマンドを実行して開始する必要があるようです。

php artisan command:make CustomCommand

ただし、私はシェル アクセスを持っていないため、他の唯一のオプションは使用することArtisan::callであり、アクセスは HTTP 経由です。構文は次のようなものです。

\Artisan::call( 'command:make', 
    array(
        'arg-name' => 'CustomCommand',
        '--option' => ''
    )
);

私が直面している問題は、コマンドのarg-name値が見つからないように見えることです。command:make

誰かがコマンドの引数名について言及しmakeたり、シェルアクセスを必要としない代替ソリューションを提案したりしていただければ幸いです。

4

1 に答える 1

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 を設定する方法があります。お役に立てれば。

于 2015-01-09T13:46:30.827 に答える