2016-11-01 3 views
0

У меня есть некоторые команды, которые запускаются с планировщиком, некоторые из них работают не так, как ожидалось, код отлично работает, если он помещен во внешний файл. но когда он запускался как команда с планировщиком, он ничего не делает, файлы не удаляются. & нет выхода из файла.Laravel 5.1 - Команды не работают, как ожидалось

Команда:

<?php 

namespace App\Console\Commands; 

use Illuminate\Console\Command; 
use DirectoryIterator; 

class CleanExports extends Command { 

    protected $name = 'clean:exports'; 

    public function fire() { 
$folderName = 'exports'; 

if (file_exists($folderName)) { 
    $i = 0; 
    foreach (new DirectoryIterator($folderName) as $fileInfo) { 
     if ($fileInfo->isDot()) { 
     continue; 
     } 
     if (time() - $fileInfo->getCTime() >= 1*24*60*60) { 
      unlink($fileInfo->getRealPath()); 
     } 
     $i++; 
    } 

    echo $i.' files cleaned'; 
}   
} 
} 

Kernel.php

<?php 

namespace App\Console;  

use Illuminate\Console\Scheduling\Schedule; 
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;  

class Kernel extends ConsoleKernel { 

    /** 
    * The Artisan commands provided by your application. 
    * 
    * @var array 
    */ 
    protected $commands = [ 
     \App\Console\Commands\Inspire::class, 
     '\App\Console\Commands\CleanExports', 
    ]; 

    /** 
    * Define the application's command schedule. 
    * 
    * @param \Illuminate\Console\Scheduling\Schedule $schedule 
    * @return void 
    */ 
    protected function schedule(Schedule $schedule) { 
     $schedule->command('inspire') 
       ->hourly();  
      $schedule->command('clean:exports')->everyMinute()->sendOutputTo('temp/errors.txt'); 
} 
+0

Что именно не работает? Не удаляет ли файлы? Более конкретно. – Andrew

+0

Какой вид «планировщика» вы используете для своей работы? –

+0

и эта строка в 'kernel.php'' \ App \ Console \ Commands \ CleanExports :: class' вместо этого' '\ App \ Console \ Commands \ CleanExports'' –

ответ

0

Причина вы не будете получать какой-либо вывод из этого, потому что это file_exists('exports') собирается вернуть ложь.

Попробуйте добавить абсолютный путь вместо:

$folderName = public_path('exports'); 

Кроме того, для ровного и проверить это правильно добавить else выводить что-то, если каталог не существует.

Надеюсь, это поможет!

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