wanggangtao преди 5 години
родител
ревизия
145ecfcf6a
променени са 4 файла, в които са добавени 109 реда и са изтрити 44 реда
  1. 18 0
      data/get_boniu_index_sh.php
  2. 5 2
      lib/index_sh.class.php
  3. 76 40
      lib/sina.class.php
  4. 10 2
      lib/table/table_index_sh.class.php

+ 18 - 0
data/get_boniu_index_sh.php

@@ -0,0 +1,18 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: 王刚涛
+ * Date: 2020/11/24
+ * Time: 19:16
+ * 获取某天的某个股票的数据
+ */
+require('../init.php');
+
+
+/***
+ * 1。获取所有的股票代码
+ * 2.遍历股票代码,住区数据,插入到数据库中
+ */
+
+
+sina::get_boniu_index_sh();//默认是今天

+ 5 - 2
lib/index_sh.class.php

@@ -14,8 +14,11 @@ class Index_sh {
 	 * @param $log       日志内容
 	 * 
 	 */
-	static public function add($log){
-
+	static public function add($attrs){
+        if (empty($attrs)) throw new Exception('参数不能为空', 102);
+        $Table_index_sh = new Table_index_sh();
+        $id = $Table_index_sh->add($attrs);
+        return $id;
 	}
     
 	/** 

+ 76 - 40
lib/sina.class.php

@@ -1,21 +1,59 @@
 <?php
 /**
- * @author:yxh
- * 用于获取 并存入数据库,通过$url,可以设置需要获取的时间段
+ * @author:王刚涛
+ * 用于获取 当天的股票数据并存入数据库,通过$url,可以设置需要获取的时间段
  */
-error_reporting( E_ALL&~E_NOTICE );
-	
-	
+error_reporting(E_ALL & ~E_NOTICE);
+
+
 class sina
 {
+    /****
+     * @param $url
+     * @return array|bool|string
+     * 对curl_setopt进行封装,消除代码冗余
+     */
+      static public function curl_get_data($url){
+        $curlHandle = curl_init();
+        curl_setopt($curlHandle, CURLOPT_URL, $url);
+        curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
+        curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, false);
+        curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST, false);
+        curl_setopt($curlHandle, CURLOPT_TIMEOUT, 10);
+        $content = curl_exec($curlHandle);
+        curl_close($curlHandle);//防止中文乱码
+        $content2 = iconv("gbk", "utf-8", $content);//子串
+        $content3 = substr($content2, strripos($content2, "=") + 1);
+        $content3 = explode(",", $content3);//分割
+        return $content3;
+    }
+
+
 //市场上所有的股票 boniu_stock
-    public function get_boniu_stock($code){
+     static public function get_boniu_stock($code)
+    {
 
     }
 
 
 
 //上证指数表(boniu_index_sh)
+     static public function get_boniu_index_sh($code="000001")
+    {
+        $url = "http://hq.sinajs.cn/list=s_sh".$code;
+        $content3=sina::curl_get_data($url);
+        $data['increase_value'] = floatval($content3[3]);//涨跌率
+        $data2=self::get_info_code($code);//调用另一个函数获取其他数据如开盘价等等
+        $data['increase_price']  =  0;   // 涨跌价
+        $data['date'] = strtotime(date('Y-m-d',time()));//当天的0点时间戳
+        $data['open_price'] = floatval($data2[1]);//开盘价
+        $data['close_price'] = floatval($data2[3]);//3点之后的当前价格就是收盘价
+        $data['hightest_price'] = floatval($data2[4]);//今日最高价
+        $data['lowest_price'] = floatval($data2[5]);//今日最低价
+        $data['amount'] =  (int)($data2[8]);//成交的股票数,以百为单位
+        $data['value'] = (int)($data2[9]);//成交金额以万为单位
+        return  Index_sh::add($data);
+    }
 //深成指数表(boniu_index_scz)
 //
 //上证50指数表(boniu_index_sh50)
@@ -23,51 +61,49 @@ class sina
 //创业板指数表(boniu_index_gem)
 //科创50指数( boniu_index_kc50)
 //日k线表 day_k_******(每月存一张表,比如boniu_day_k_202011)
-
-    static public function get_day_k_base($code,$date){
+    /***
+     * @param $code
+     * @param $date
+     * 根据股票代码获取股票的实时信息
+     */
+    static public function get_info_code($code){
         $stock_code = $code;
         $f = substr($stock_code, 0, 1);
-        if ($f == "6") {
-            $stock_code = "sh".$code;
+        if ($f == "6"  || $f == "0" ) {
+            $stock_code = "sh" . $code;
+        } else {
+            $stock_code = "sz" . $code;
         }
-        else {
-            $stock_code = "1".$code;
-        }
-        $url = "http://hq.sinajs.cn/list=".$stock_code;
+        $url = "http://hq.sinajs.cn/list=" . $stock_code;
+        $content3=sina::curl_get_data($url);//封装为函数,执行url获取结果并解析
+        return $content3;
+    }
 
-        $curlHandle = curl_init();
-        curl_setopt( $curlHandle , CURLOPT_URL, $url );
-        curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 );
-        curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYPEER, false);
-        curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYHOST, false);
-        curl_setopt( $curlHandle , CURLOPT_TIMEOUT, 10 );
-        $content = curl_exec($curlHandle);
-        curl_close( $curlHandle );
-        //防止中文乱码
-        $content2 = iconv("gbk","utf-8",$content);
-        //子串
-        $content3=substr($content2,strripos($content2,"=")+1);
-//        var_dump($content3);
-        $content3 = explode(",",$content3);//分割
-//        var_dump($content3);
+
+    static public function get_day_k_base($code, $date)
+    {
+        $stock_code = $code;
+        $f = substr($stock_code, 0, 1);
+        if ($f == "6"  || $f == "0" ) {
+            $stock_code = "sh" . $code;
+        } else {
+            $stock_code = "sz" . $code;
+        }
+        $url = "http://hq.sinajs.cn/list=" . $stock_code;
+        $content3=sina::curl_get_data($url);//封装为函数,
         $data['date'] = $content3[30];
-        $data['code'] =$code;
+        $data['code'] = $stock_code;
         $data['open_price'] = $content3[1];//开盘价
+        $data['close_price'] = $content3[3];//3点之后的当前价格就是收盘价
         $data['hightest_price'] = $content3[4];//今日最高价
         $data['lowest_price'] = floatval($content3[5]);//今日最低价
-        $data['amount']  = $content3[8];//成交的股票数,以百为单位
+        $data['amount'] = $content3[8];//成交的股票数,以百为单位
         $data['value'] = $content3[9];//成交金额以万为单位
-
-        return Day_k_base::add($data,$date);
+        return Day_k_base::add($data, $date);
     }
 
 //除权除息表(boniu_xrxd_log)
 //st记录表(boniu_st_log)
-
-
-
 }
-	 
-	
-	 
-	 ?>
+
+?>

+ 10 - 2
lib/table/table_index_sh.class.php

@@ -31,10 +31,18 @@ class Table_index_sh extends Table {
 
     public function add($attr){
         $param = array (
-
-             'admingroup_name'    => array('string', $attr['name'])
+            'index_sh_date'    => array('number', $attr['date']),
+            'index_sh_open_price'    => array('number', $attr['open_price']),
+            'index_sh_close_price'    => array('number', $attr['close_price']),
+            'index_sh_hightest_price'    => array('number', $attr['hightest_price']),
+            'index_sh_lowest_price'    => array('number', $attr['lowest_price']),
+            'index_sh_increase_value'    => array('number', $attr['increase_value']),
+            'index_sh_increase_price'    => array('number', $attr['increase_price']),
+            'index_sh_amount'    => array('number', $attr['amount']),
+            'index_sh_value'    => array('number', $attr['value']),
 
         );
+//var_dump($param);
         return $this->pdo->sqlinsert($this->table_fullname, $param);
     }