在我的控制器中,我有以下方法可以检查网址状态
public function index(){
$url = Url::latest()->paginate();
return UrlsResource::collection($url);
}
我的UrlsResource
返回这样的数据
public function toArray($request)
{
return [
'id' => $this->id,
'url' => $this->url,
'status' => $this->status,
'created_at' => Carbon::parse($this->created_at)->format('Y-m-d'),
];
}
$this->status
中是我的模型的访问者。
public function getStatusAttribute(){
$handle = curl_init($this->url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($handle);
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
curl_close($handle);
$message = [
'100' => '(100) Continue '. $this->url,
'101' => '(101) Switching Protocols '. $this->url,
'102' => '(102) Processing '. $this->url,
];
return $message[$httpCode];
}
如何运行cronjob,以便在其中运行索引方法中的内容?
我试图在其中输入命令
class CheckUrl extends Command
{
protected $signature = 'check:url';
protected $description = 'Check url';
public function __construct()
{
parent::__construct();
}
public function handle()
{
$url = Url::latest()->paginate();
UrlsResource::collection($url);
}
}
我试图通过命令行运行它
php artisan check:url
但什么都没发生
在将此cron条目添加到服务器的文档中说
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
但是我不知道确切的位置(我使用xampp)
答案 0 :(得分:0)
您可以将controller @ method作为字符串传递给call()。
$schedule->call('App\Http\Controllers\MyController@MyAction')->everyMinute();
答案 1 :(得分:-1)
您可以像这样从控制器调用调度程序的任何方法
$schedule->call('App\Http\Controllers\yourController@index')->everyMinute()
但是您需要将调度程序命令添加到corntab中,以便可以执行任务。
在终端中运行
crontab -e
并通过此命令
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1