我正在构建一个股票分析网站,以使用股票信息,如价格历史等。我将实现一些我自己的算法,一旦我得到的数据,但我很难获取历史数据。该网站托管在biz.nf的免费网络托管上。包含的connect.php文件包含所有需要的sql信息并连接到数据库。我有错误检查,所以我知道这不是问题。我也尝试手动复制/粘贴链接,他们的工作,所以我正确地创建网址。我在这个网站和其他网站上发现了一些类似的话题,但是我没有看到明确的解决方案,或者为什么会发生这个问题。雅虎阻止我吗? 另外,我想提一提,我对PHP编程颇为陌生,但我在C和C++中有严肃的背景,所以如果可以的话,请在提供任何帮助时考虑这一点。 在此先感谢!PHP file_get_contents错误
这是我对于被执行index.php文件代码
代码:
<html>
<head>
<title>StockGrader</title>
</head>
<body bgcolor="green" text="black" link="red">
<div id="header">
<hr>
<h1>Welcome To <b><i>StockGrader</b></i><h1/></hr>
<?php
include("phpINCLUDES/connect.php");
//function that creates a url from which to download data
function createURL($ticker)
{ $currentMonth = date("n") - 1; //"n" current month as a 1-digit number
$currentDay = date("j"); //"j" current day as a 1-digit number
$currentYear = date("Y"); //"Y" current year as a 4-digit number
echo "current URL is http://ichart.finance.yahoo.com/table.csv?s=$ticker&d=$currentMonth&e=$currentDay&f=$currentYear&g=d&a=3&b=10&c=2013&ignore=.csv";
echo "\n\n\n";
return "http://ichart.finance.yahoo.com/table.csv?s=$ticker&d=$currentMonth&e=$currentDay&f=$currentYear&g=d&a=3&b=10&c=2013&ignore=.csv";
}
//function to download data from a url and store into a file
function getCSVFile($URL, $outputFile)
{
**$content = file_get_contents($URL);** //goes to the file located at this link and downloads the full file contents as a string of data
//replace a string which is the first parameter with the string in the second parameter. the string being replaced is in the third parameter
$content = str_replace("Date,Open,High,Low,Close,Volume,Adj Close","", $content);
//removes all white space
$content = trim($content);
//write a string into a file
file_put_contents($outputFile, $content);
}
function fileToDatabase($txtFile, $tableName)
{
$file = fopen($txtFile, "r");
while(!feof($file))
{
$line = fgets($file);
//separates a string
$pieces = explode(",", $line);
//stock variables
$date = $pieces[0];
$open = $pieces[1];
$high = $pieces[2];
$low = $pieces[3];
$close = $pieces[4];
$volume = $pieces[5];
// $adjclose = $pieces[6]; WE ARE NOT GOING TO USE THIS ONE USUALLY
$amount_change = $close - $open;
if($open!=0)
{ $percent_change = ($amount_change/$open)*100; }
else $percent_change = 99999;
//check if table exists or not
$sql = "SELECT * FROM $tableName";
$result = mysql_query($sql);
//if table doesn't exist
if(!$result)
{
$sql_2 = "CREATE TABLE $tableName (date DATE , PRIMARY KEY(date), open FLOAT, high FLOAT, low FLOAT, close FLOAT, volume INT, amount_change FLOAT, percent_change FLOAT)";
mysql_query($sql_2);
}
//insert into table
$sql_3 = "INSERT INTO $tableName(date, open, high, low, close, volume, amount_change, percent_change) VALUES ('$date','$open','$high','$low','$close','$volume','$amount_change','$percent_change')";
mysql_query(sql_3);
}
fclose($file);
}
function main()
{
//i don't have this file yet
$mainTickerFile = fopen("tickerMaster.txt","r");
while(!feof($mainTickerFile))
{
$companyTicker = fgets($mainTickerFile);
$companyTicker = trim($companyTicker); //trim whitespace just in case
$fileURL = createURL($companyTicker); //create url for each stock ticker
//create a directory path to each file for each ticker
$companyTxtFile = "txtFiles/".$companyTicker.".txt"; //I NEED TO CREATE THIS FOLDER ON MY SERVER
getCSVFile($fileURL, $companyTxtFile);
fileToDatabase($companyTxtFile, $companyTicker);
}
}
main();
?>
<p><a href="secondpage.html">Run Script</a></p>
</div>
</body>
</html>
这是我收到的错误:我做了
[function.file-get-contents]: failed to open stream: Connection refused in /srv/disk12/1368341/www/nemanja.co.nf/index.php on line 26
粗体文本(每边2个星号)出现错误的位置。
另外,即时托管网站的服务器allow_url_fopen = 1 如果是这样的情况yahoo.com阻止我有没有办法解决这个问题? 是否有另一种获取所有历史股票数据的方法?
你有服务器上的权限设置是否正确?它拒绝连接,所以在那里出了问题。 – brbcoding
就像我说过的,我对这个网络编程都很陌生,所以我不确定你的意思。我理解权限的概念,但你能否详细说明一下? 也许举个例子,可能是错的,我有什么权限有错。 – yot