2017-01-09 11 views
0

私はここで読む:https://laravel.com/docs/5.3/queues#running-the-queue-workerキューワーカーでcronジョブを実行するにはどうしたらいいですか? (laravel 5.3)

私の場合はこのようなものです

それを実装する方法を私はチュートリアルを使用してcronジョブを作成したいが、私は混乱しています:たとえば

私はテーブルオーダーを持っています。

  1. 状態、INT(10)

  2. checkout_at、私はほんの数フィールドに言及日時

  3. canceled_at、日時

:表の順序は、このようなフィールドがあります

注:

状態= 1 - >受信

状態= 2 - >キャンセル

状態= 3 - >お支払い

私はこのようなロジックを作りたい

についてWaitng:

買い手があればcheckout_atの2時間後に注文をキャンセルし、ステータスを「キャンセル済み」に変更し、値「cancelled_at」を挿入しました

私はこのような関数を作成します:

public function cron_job() 
{ 
    $users = DB::table('orders') 
       ->select('*') 
       ->first(); 

    $checkout_at = $users->checkout_at; 
    $after = strtotime("+2 hours", strtotime($checkout_at)); 

    if($checkout_at > $after) { 
     DB::table('orders') 
      ->where('id', $users->id) 
      ->update(['status ' => 2, 'canceled_at' => date("Y-m-d H:i:s")]); 
    } 
} 

上記のチュートリアルを実装して関数を呼び出すためのcronジョブを作成するにはどうすればよいですか?

+1

あなたは間違った文書を読んでいます。 [タスクスケジューリング](https://laravel.com/docs/5.3/scheduling)を参照してください。 –

+0

キューはcronと同じではない 'jobs'用です –

答えて

1

この種のジョブでは、Laravel Task Shedulingを使用してください。これにより、毎時間(または選択した他の任意の間隔で)スクリプトを実行するオプションが与えられます。

$schedule->call(function() { 
    // Your code 
})->hourly(); 

ただし、ウェブサイトがホストされているサーバーにcronジョブを追加する必要があります。

関連する問題