2016-09-14 12 views
0

Laravelタスクスケジューラを使用するタスクは完全に起動するよりも時間がかかります。 Task::checkSpiders()という名前のパブリックメソッドが呼び出されます。Laravel MySQLエラー(スケジュールされたタスクのみ)

これはAPIにヒットします(正常に機能している)ので、それに応じてローカルDBを更新する必要があります。

私はそれが完璧の実行

Route::get('/test', function() { 
    $test = Task::checkSpiders(); 
} 

...ようにルートを作成した場合。

私はそれが私にこのエラーがスローされますがCRONからそれを実行...

#0 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(55): PDO->__construct('mysql:host=loca...', 'forge', '', Array) 
#1 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php(24): Illuminate\Database\Connectors\Connector->createConnection('mysql:host=loca...', Array, Array) 
#2 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php(61): Illuminate\Database\Connectors\MySqlConnector->connect(Array) 
#3 [internal function]: Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors\{closure}() 
#4 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Database/Connection.php(920): call_user_func(Object(Closure)) 
#5 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Database/Connection.php(788): Illuminate\Database\Connection->getPdo() 
#6 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Database/Connection.php(673): Illuminate\Database\Connection->reconnectIfMissingConnection() 
#7 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Database/Connection.php(479): Illuminate\Database\Connection->run('update `tasks` ...', Array, Object(Closure)) 
#8 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Database/Connection.php(422): Illuminate\Database\Connection->affectingStatement('update `tasks` ...', Array) 
#9 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2072): Illuminate\Database\Connection->update('update `tasks` ...', Array) 
#10 /var/www/laravel/app/Task.php(60): Illuminate\Database\Query\Builder->update(Array) 
#11 /var/www/laravel/app/Task.php(85): App\Task::updateTask('a5b829767a6811e...', 'Finished', '2016-09-14 10:4...', '2016-09-14 11:5...') 
#12 /var/www/laravel/app/Console/Kernel.php(34): App\Task::checkSpiders() 
#13 [internal function]: App\Console\Kernel->App\Console\{closure}() 
#14 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php(507): call_user_func_array(Object(Closure), Array) 
#15 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Console/Scheduling/CallbackEvent.php(61): Illuminate\Container\Container->call(Object(Closure), Array) 
#16 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleRunCommand.php(61): Illuminate\Console\Scheduling\CallbackEvent->run(Object(Reflexions\DockerLaravel\DockerApplication)) 
#17 [internal function]: Illuminate\Console\Scheduling\ScheduleRunCommand->fire() 
#18 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php(507): call_user_func_array(Array, Array) 
#19 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Console/Command.php(169): Illuminate\Container\Container->call(Array) 
#20 /var/www/laravel/vendor/symfony/console/Command/Command.php(256): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#21 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Console/Command.php(155): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#22 /var/www/laravel/vendor/symfony/console/Application.php(794): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#23 /var/www/laravel/vendor/symfony/console/Application.php(186): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Console\Scheduling\ScheduleRunCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#24 /var/www/laravel/vendor/symfony/console/Application.php(117): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#25 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(107): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#26 /var/www/laravel/artisan(36): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#27 {main} 

DBに挿入するためのコード(私は関連性があるとは思わないが、私はとにかくで追加します。..また)

$tasks = DB::table('tasks') 
      ->where('id', $id) 
      ->whereNull('end') 
      ->update([ 
        'status' => $status, 
        'start' => $start, 
        'end' => $end, 
       ]); 

、私はLaravelでCRONを管理するためにSupervisordを使用してドッカーでこれを実行しているだけのノート。

ご迷惑をおかけして申し訳ありません。

答えて

1

愚かな間違い;

CRONが別のユーザーで実行されているため、.envからロードされる環境変数は使用できません。

これを確認するには、CRONで実行されているタスクからENV変数をログに記録します。そのよう

... []空の配列が返さ

Log::info(json_encode(get_defined_vars())); 

私はこれまでconfigに変数をハードコードしており、すべてが完璧に動作しています。使用して(彼らは他の場所で使用されているINCASE)

は、代わりに私が... PHPでENV変数を設定している可能性が

<?php 
    putenv("KEY=value"); 
?> 
関連する問題