2017-02-06 8 views
1

私は/ app/Http/Controllersのlaravelプロジェクトにコントローラを持っています。 コントローラがtransferDataControllerを呼び出しました。Laravel Cron Jobs - コントローラ機能

<?php 
namespace App\Http\Controllers; 
use DB; 
class TransferDataController extends Controller{ 
public function moveStTempSales(){ 



// then a lot of queries. 

    } 
} 

この機能は15分ごとに呼び出す必要があります。ボタンまたはいくつかの要素にURLを使用してAPIを呼び出さずに。私はLaravel Scheduleについて読んでいました。 Laravel 4で動作しますか?そしてもしそうなら、どうすれば私の場合にこの機能をスケジュールすることができますか? 私は、サーバーのcronジョブについてよく知っています。あなたはcronの上で呼び出される関数を含むクラスファイルを作成することができます作成​​し、このフォルダに

yourproject /アプリ/コンソール/コマンド

+0

私はそれはコントローラのアクションにあまりにも多くのロジックを置くために悪い習慣だと思います。それをライブラリクラス関数に移動し、コントローラとCLIコマンドの両方から同じ関数を呼び出してから、そのCLIコマンドをcronから実行することができます。スケジューラがL4で利用可能かどうか分かりません – apokryfos

+0

リファクタリングがオプションでない場合は、いつでも 'curl http:// host/TransferData/moveStTempSales'をcronタスクに追加できます。 – apokryfos

答えて

2

は、次のディレクトリに移動します。

今同じパス上のファイルがあります:Kernel.php

このファイルには含まれています。現在、作成したクラスの関数を呼び出すために使用される

$schedule->command(); 

を。その使用後

php artisan schedule:run 

機能を実行します。

Reference

+0

はいわかりました。私のコントローラにその機能を保持し、それをスケジュールで呼び出す方法はありますか? –

+1

@ElioChamy:そうは思わない。 –

+0

私はkernel.phpで関数を試した後、PHPの職人のスケジュール:うまく動作しました、ありがとうございます –

関連する問題