猿问

请教一下 代码哪儿出问题了,貌似抓不到数据

抓不到数据。。浏览器打开可以的

<?php
include 'conn.php';

function go_curl($url) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HEADER, 0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_TIMEOUT,60);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    $data = curl_exec($curl);
    curl_close($curl);

    return $data;
}

function random_str($length) {
    $str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    
    $strlen = 62;
    while($length > $strlen){
        $str .= $str;
        $strlen += 60;
    }

    $str = str_shuffle($str);
    return substr($str, 0, $length);
}

$url_list = array(
    'u_cx',
);

function writeData($type) {

    $urlArr = array(
        'u_cx' => array('pingtai_url' => 'http://www.u.cx', 'url' => 'https://www.u.cx/trade/index_json/market/wkc_bitcny'),   
    );

    $urlData = $urlArr[$type];
    $url = $urlData['url'];

    if ($type == 'u_cx' ) {
        $url .= random_str(8);
    }

    $data = go_curl($url);

    if (! $data) {
        return false;
    }

    $dataFormart = array(
        'current_price' => 0,
        'buy' => 0,
        'sell' => 0,
        'volume' => 0,
        'turnover' => 0,
        'change' => 0
    );

    if (in_array($type, array('u_cx11'))) {
    
        $dataArr = $data;
    } else {
      $data = trim($data,chr(239).chr(187).chr(191));
        $dataArr = json_decode($data, true);
        if (! $dataArr) {
            return false;
        }
    }

    switch($type) {
        case 'u_cx':
            $info = $dataArr['top'];
            $dataFormart['current_price'] = $info[0];
            $dataFormart['buy'] = $info[1];
            $dataFormart['sell'] = $info[2];
            $dataFormart['volume'] = $info[5];
            $dataFormart['change'] = $info[6];
        break;    
      }

    $data = json_encode($dataFormart);

    // insert 方式
    $sqlArr = array(
        $type,
        $urlData['pingtai_url'],
        $data,//htmlspecialchars($data)
    );



  echo "UPDATE `info` SET `info` = '{$data}' WHERE `pingtai` = '{$type}'";

  return $sql;
}

foreach ($url_list as $value) {

    $sql = writeData($value);
    if (! $sql) continue;

    mysql_query($sql);
}

mysql_close($con);

?>
弑天下
浏览 307回答 3
3回答

慕码人8056858

先分析一下原始接口的header相关信息,模拟请求就要模拟的像一些,另外就是做好日记,有什么问题也能很快发现

慕桂英3389331

环境、请求不一致的情况下,大家很难看代码来给题主进行分析的(除非是很明显的语法错误),建议先打断点进行debug,根据您的业务逻辑走调试,看看走到哪的时候是不对的,找到问题点,如果无法解决,再把具体的问题点写出来题问~

慕仙森

推荐你花五分钟时间看一下xdebug相关,用xdebug追踪一下
随时随地看视频慕课网APP
我要回答