2016-05-19 13 views
0

私はlarave 5.1をphp5で使用していますが、私は自分のcronジョブを作成して未払いの請求書を削除しようとしていますが、ユーザーログを印刷してジョブが機能していることを確認しています。Laravel Scheduler with Cron Job

これが私のアプリ/コンソール/ Kernel.php

protected $commands = [ 
    \App\Console\Commands\Inspire::class, 
    \App\Console\Commands\RemoveUnpaidInvoice::class, 
]; 

protected function schedule(Schedule $schedule) 
{ 
    $schedule->command('removeUnpaidInvoice')->everyMinute(); 
    // $schedule->command('inspire')->hourly(); 
} 

であり、これは私のRemoveUnpaidInvoiceクラスです:

public function handle() 
{ 
    UserLog::create([ 
     'user_id' => '3', 
     'title' => 'Cron Testing', 
     'log' => 'Time : ' . date('H:i:s') 
    ]); 
} 

私のファイルが行われた後、私は私を実行するために、私のターミナルで次のコマンドを実行しますクーロン:私はスケジュールの職人のコマンドを実行した後、その後、私の端末はこのメッセージを表示し

php artisan schedule:run 

Running scheduled command: '/usr/bin/php5' 'artisan' removeUnpaidInvoice > '/dev/null' 2>&1 & 

私は自分のデータベースをチェックしてユーザーログが作成されているかどうかを確認し、作成されているので、ユーザーログはcron経由で新規追加されます。

しかし、問題は、私は1分間待っていて、ユーザログを追加せず、2分、3分待って、別のユーザログがデータベースに追加されていないということですか?

修正方法?私は間違いを犯したのですか?ここで

答えて

1

Starting sheduler

ご使用のサーバーに追加する必要がある唯一のcronエントリです:

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1

このクロンは毎分Laravelコマンドスケジューラを呼び出します。次に、> Laravelはスケジュールされたタスクを評価し、予定されているタスクを実行します。

コンソールには、cronを起動する必要はありません。php artisan schedule:runを実行してください。

+0

は、私は私のコンソールで次のコマンドを実行し * * * * * PHP /パス/に/職人スケジュール:実行>>を/ dev/null 2>&1 が、何も起こり、そして * * * * * PHPの職人を実行しますスケジュール:実行>>/dev/null 2>&1 何も起こらない – yudijohn

+1

いいえ、いいえ。 '* * * * * php/path/to/artisan schedule:実行>>/dev/null 2>&1'はcronコマンドであるため、' crontab'になければなりません。 Laravel shedulerはcronのみで動作します。 –

+0

ありがとう、私は私のcrontabを設定する必要がありますか分からない。 – yudijohn