linux定时任务
要实现的功能是,每天获取一次沪深指数,沪深指数采用聚合数据(免费会员1000/天)
话不多说,上代码啦
-
先封装个curl请求
public static function curl($url, $data = '', $raw = false)
{ $ch = curl_init(); $params[CURLOPT_URL] = $url; //请求url地址 $params[CURLOPT_HEADER] = false; //是否返回响应头信息 $params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回 $params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向 $params[CURLOPT_TIMEOUT] = 30; //超时时间 if (!empty($data)) { $params[CURLOPT_POST] = true; $params[CURLOPT_POSTFIELDS] = $data; } $params[CURLOPT_SSL_VERIFYPEER] = false; $params[CURLOPT_SSL_VERIFYHOST] = false; curl_setopt_array($ch, $params); //传入curl参数 $content = curl_exec($ch); curl_close($ch); if ($content && !$raw) { return json_decode($content, true); } return $content; }
-
请求接口获取数据,存进数据库,每天更新
public function actionHsData()
{$key = '填写你自己的key'; $data_h = CurlTools::curl('http://web.juhe.cn:8080/finance/stock/hs?type=0&key='.$key); if($data_h['error_code'] == 0){ $info = json_encode($data_h['result']); $model = KvStore::find()->where(['key'=>'上证指数'])->one(); if($model){ $model->value = $info; $model->create_at = time(); $model->save(); }else{ $model = new KvStore(); $model->create_at = time(); $model->key = '上证指数'; $model->value = $info; $model->save(); } } $data_s = CurlTools::curl('http://web.juhe.cn:8080/finance/stock/hs?type=1&key='.$key); if($data_s['error_code'] == 0){ $info = json_encode($data_s['result']); $model = KvStore::find()->where(['key'=>'深证指数'])->one(); if($model){ $model->value = $info; $model->create_at = time(); $model->save(); }else{ $model = new KvStore(); $model->create_at = time(); $model->key = '深证指数'; $model->value = $info; $model->save(); } }
}
- crontab -e 没有会创建一个crontab,有就直接打开该文件
找到你的php安装目录,我使用的是yii框架,所以需要找到yii的位置,Auto是控制器,HsData是方法名
- crontab -l 可以查看当前定时任务
之前有人问我,为什么自动确认收货不使用crontab,这次就来了
如果你觉得这篇文章还不错,下角点个赞,是对我开源最大的鼓励
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。