PHP警告:使用长url获取文件内容
我有一些调用第三方服务并返回股票/etf数据的代码。这就是错误:PHP警告:使用长url获取文件内容,php,Php,我有一些调用第三方服务并返回股票/etf数据的代码。这就是错误: PHP Warning: file_get_contents(http://********.******.********.com/*************.json?apikey=********************************&symbols=FFHG,FFTI,NUDM,NUEM,GIGB,AZIA,BCHP,BRAF,BRXX,BSCF,BSJF,DBIZ,EEHB,EWRM,EWRS
PHP Warning: file_get_contents(http://********.******.********.com/*************.json?apikey=********************************&symbols=FFHG,FFTI,NUDM,NUEM,GIGB,AZIA,BCHP,BRAF,BRXX,BSCF,BSJF,DBIZ,EEHB,EWRM,EWRS,GURX,INC,ITF,JUNR,LAG,MATL,MDLL,SUBD,TENZ,CU,MULT,PLTM,HYLB,SGQI,WTID,WTIU,CUMB,COMB,COMG,BVAL,PPLN,ICOW,CALF,GMFL,RNDM,RNEM,RNLC,RNMC,RNSC,RNDV,FCAL,VSMV,OCIO,TTAI,GOAU,VESH,USMF,GSSC,SMMD,IBD,PREF,FANZ,FNG,EUXL,SUSC,SUSB,IGEB,HYDB,SQLV,REEM,RGLB,REFA,SPMV,USEQ,EQRR,EMXC,USOU,USOD,DMRL,DMRM,DMRS,DMRI,EDOW,AMCA,ULBR,DLBR,EMBU,DWPP,FMDG,FFIU,FPEI,YESR,FLMI,FLMB,MFUS,MFEM,MFDX,SECT,MAGA,GHYB,OBOR,PFFD,MLQD,LLQD,IBDS,UBRT,DBRT,RBUS,RBIN,MXDU,XNTK,GSEW,PBUS,PBSM,PBDM,PBEE,PBTP,BSCR,BSJP,HTRB,DALT,PBND,NUBD,LFEQ,SCHK,CHGX,USMC,KEMQ,VGFO,DIAL,GOP,DEMS,PLCY,BERN,BRGL,SPMD,AIEQ,KGRN,MMIT,MMIN,PVAL,PMOM,LOGO,GRMY,EURZ,USHY,ULVM,USVM,UIVM,UEVM,USTB,UITB,CEY,FLAU,FLCA,FLEE,FLEH,FLFR,FLGR,FLHK,FLIY,FLIP,FLJH,FLGB,FLKR,FLBR,FLCH,FLMX,FLTW,GUDB,BIBL,RVRS,FTVA,FFSG,FFTG,FMHI,SDVY,JDIV,JMIN,JV
AL,JQUA,JMOM,ENTR,JHSC,PXUS,VTC,OMFL,OMF in ..../functions.php on line 931
它在“JV”之后中断,但实际值是JVAL(下一行将看到AL位)
我已经检查了数据库,应该100%返回的值是JVAL。字段中没有空格
我不知道为什么会在那一点上破裂
下面是调用文件\u get\u内容的PHP函数:
function get_etf_data($syms) {
if (is_array($syms)) {
$syms = implode(",", $syms);
}
$url = 'http://********.******.********.com/*************.json?apikey=********************************&symbols='.$syms;
//die($url); // debug
sn_bc_counter('get_etf_data',$_SERVER['REQUEST_URI']);
$data = file_get_contents($url,"r");
$data = json_decode($data);
$arr = array();
foreach ($data->results as $result) {
$arr[] = $result;
}
return $arr;
}
有什么好主意可以给我指出正确的方向吗?你能用curl而不是file\u get\u contents检查一下吗 像这样:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$responseBody = curl_exec($ch);
if ($responseBody === false) {
echo "CURL Error: " . curl_error($ch);
}
$data = json_decode($responseBody);
为什么要使用文件获取内容从另一台服务器获取数据?如果您可以使用curl,那就更好了。这确实是一个原生PHP错误,因为它没有文档记录,我无法复制它。另一个注意事项:您在请求中使用的是不安全的http。@ShashankShekhar为什么
file\u get\u contents()
用于请求URI,为什么他不应该使用它?“这是没有根据的建议。”丹尼尔。是的,我知道有人用过。但是,当url很长或有404时,它不会给出正确的错误并中断页面。所以我更喜欢curl,因为它速度更快,处理错误的方式更好,并且支持更多的请求类型,而不是get。谢谢!我使用了CURL方法,它似乎有效