2015-05-26 19 views
6

Artisan komutlarını içeren bir paketim var. Öyle gibi benim servis sağlayıcı aracılığıyla Artisan ile bu komutları kayıtlı ettik:Bir pakette Artisan komutları nasıl zamanlanır?

/** 
* Register the application services. 
* 
* @return void 
*/ 
public function register() 
{ 
    // Register Amazon Artisan commands 
    $this->commands([ 
     'App\Marketplace\Amazon\Console\PostProductData', 
     'App\Marketplace\Amazon\Console\PostProductImages', 
     'App\Marketplace\Amazon\Console\PostProductInventory', 
     'App\Marketplace\Amazon\Console\PostProductPricing', 
    ]); 
} 

Ancak bu komutlar günlük yayınlanmasının planlandığı gerekir.

Sana komutları ve bunların sıklığını kayıt olabilirsiniz schedule() yöntem yoktur/Konsol/Kernel.phpapp biliyorum ama nasıl yerine benim paketin servis sağlayıcı komutları zamanlayabilirsiniz?

+0

Neden bunları Çekirde programlayamıyorsunuz? – MECU

+0

@MECU Çünkü onlar bir paket içinde ve Laravel uygulamasının kendisi değil. –

+0

bunu hiç çözdünüz mü? Şimdi aynı sorunla karşı karşıyayım kendim. – sgrover

cevap

17

Laravel'in kaynağını bulmak için çok fazla hata ayıklama ve okuma işlemi gerçekleştirdi, ancak oldukça basit olduğu ortaya çıktı. Uygulama, komutları zamanlamak için önyükleme yapana kadar beklemektir, çünkü Laravel Schedule örneğini tanımlar ve komutları dahili olarak zamanlar. Umarım bu bir kaç saat boyunca ağrılı hata ayıklamayı kurtarır!

use Illuminate\Support\ServiceProvider; 
use Illuminate\Console\Scheduling\Schedule; 

class ScheduleServiceProvider extends ServiceProvider 
{ 
    public function boot() 
    { 
     $this->app->booted(function() { 
      $schedule = $this->app->make(Schedule::class); 
      $schedule->command('some:command')->everyMinute(); 
     }); 
    } 

    public function register() 
    { 
    } 
} 
+4

Müthiş. Büyük bulmak! –

+0

Teşekkür ederiz! Onun çalışmaları harika – boksiora

+0

Bu cooooool çalışmak, teşekkürler –