私はサーバのステータスを更新するために毎分コントローラ機能を実行しようとしていますが、スケジューラはテーブル内のすべての行を更新した後に1回しか実行されません。これはLaravelのタスクスケジューラを初めて使用したときです。私はcmdでそれを実行しようとしました、それは実行されているスケジュールされたコマンド:クロージャと言うと、すべてのテーブルが更新された後、タスクが停止します。Laravel Schedulerが一度だけ実行されています
//My Controller function to be called
public function updateServerScheduler()
{
$servers = Server::all();
ini_set('max_execution_time', 300);
foreach ($servers as $server)
{
//$server->firewall = @fsockopen($server->ip, 80, $errno, $errstr, 30);
exec("ping -w 60 " . $server->ip, $output, $result);
if($result != 0)
{
$server->status = 0;
$server->latency = "None";
}
else
{
$server->status = 1;
$server->latency = $this->pingDomain($server->ip);
}
$server->last_update = date('Y-m-d H:i:s');
$server->save();
}
}
//My Kernel.php
namespace App\Console;
use App\Http\Controllers\HomeController;
use Server;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
protected $commands = [
//
];
protected function schedule(Schedule $schedule)
{
$schedule->call(function() {
$hc = new HomeController();
$hc->updateServerScheduler();
})->everyMinute();
}
protected function commands()
{
require base_path('routes/console.php');
}
}
crontabを追加しましたか?あなたがcronジョブを定義する必要がある毎分それを実行する場合は、PHPが1回実行されるので、 –
いいえ、私はしませんでした。私はこのスケジューラを初めて使っているので、laravelでcronジョブを作成する方法を教えていただけますか? –
https://laravel.com/docs/5.4/scheduling –