2015-11-30 2 views
0

Я пытаюсь использовать laravel 5.1 scheduler для запуска команды захвата данных из твиттера и сохранения ее в базе данных. Если я помещаю фактическую команду в файл Kernel.php, она не беспокоится и получает/вставляет данные в базу данных, но когда я пытаюсь поместить ее во внешний файл для запуска и просто поместить команду в ядро, я получаю этоКак использовать расписание Laravel 5.1?

Running scheduled command: (touch/storage/framework/schedule-4ff51352255727a7381f73c7bd3eb90c; '/Applications/MAMP/bin/php/php5.5.18/bin/php' 'artisan' lookup; rm /storage/framework/schedule-4ff51352255727a7381f73c7bd3eb90c) > /dev/null 2>&1 & 

Это мой Kernal.php файл

<?php 

namespace App\Console; 

use Illuminate\Console\Scheduling\Schedule; 
use Illuminate\Foundation\Console\Kernel as ConsoleKernel; 
use DB; 
use Session; 
use Carbon\Carbon; 
use Thujohn\Twitter\Facades\Twitter; 

class Kernel extends ConsoleKernel 
{ 
    /** 
    * The Artisan commands provided by your application. 
    * 
    * @var array 
    */ 
protected $commands = [ 
    \App\Console\Commands\Inspire::class, 
    \App\Console\Commands\Scheduled_post::class, 
]; 

/** 
* Define the application's command schedule. 
* 
* @param \Illuminate\Console\Scheduling\Schedule $schedule 
* @return void 
*/ 
protected function schedule(Schedule $schedule) 
{ 
    $schedule->command('lookup') 
      ->everyMinute() 
      ->withoutOverlapping(); 
} 
} 

и моя команда

<?php 

namespace App\Console\Commands; 

use Illuminate\Console\Command; 
use Illuminate\Foundation\Inspiring; 

class Lookup extends Command 
{ 
/** 
* The name and signature of the console command. 
* 
* @var string 
*/ 
protected $signature = 'Lookup'; 

/** 
* The console command description. 
* 
* @var string 
*/ 
protected $description = 'Performing user lookup'; 

/** 
* Execute the console command. 
* 
* @return mixed 
*/ 
public function handle() 
{ 
    $user_lookup = Twitter::getUsersLookup(['screen_name' => 'some_user', 'format' => 'object']); 
     $social_user = array(
      'email'      => null, 
      'screen_name'    => $user_lookup[0]->screen_name, 
     ); 
     DB::table('social_users')->insert($social_user); 
} 
} 

Тестирование в MAMP, вручную выполнение php artisan schedule:run через терминал для тестирования.

Я не уверен, как это исправить или что происходит?

ответ

1

ОК, в вашем ядре, использовать правильную подпись, и добавить эту команду в:

<?php 

namespace App\Console; 

use Illuminate\Console\Scheduling\Schedule; 
use Illuminate\Foundation\Console\Kernel as ConsoleKernel; 
use DB; 
use Session; 
use Carbon\Carbon; 
use Thujohn\Twitter\Facades\Twitter; 

class Kernel extends ConsoleKernel 
{ 
    /** 
    * The Artisan commands provided by your application. 
    * 
    * @var array 
    */ 
protected $commands = [ 
    \App\Console\Commands\Inspire::class, 
    \App\Console\Commands\Scheduled_post::class, 
    \App\Console\Commands\Lookup::class, 
]; 

/** 
* Define the application's command schedule. 
* 
* @param \Illuminate\Console\Scheduling\Schedule $schedule 
* @return void 
*/ 
protected function schedule(Schedule $schedule) 
{ 
    $schedule->command('Lookup') 
      ->everyMinute() 
      ->withoutOverlapping(); 
} 
} 
It 

Это Lookup не поиск.

+0

Спасибо за ваш ответ. К сожалению, это не решило проблему, база данных по-прежнему остается пустой, но если я запускаю ее в самом файле ядра, функция работает отлично. – kevinabraham

+0

Что происходит, когда вы запускаете «php artisan Lookup» –

+0

Получить эту ошибку '[InvalidArgumentException] Команда« Поиск »не определена.' – kevinabraham

Смежные вопросы