我有几个要求列在下面。如何使用雅虎财务获得RealTime股票价格
- 获取实时股价没有页面刷新或ajax。 (即雅虎财经,他们获得最新的股票价格没有页面刷新和Ajax调用)
- 从尽可能多的获取股票价格作为股市BSE一样,NSC等。
现在使用下面的代码我是能够得到股票价格,但要么我必须刷新页面或打电话给Ajax,在这两种情况下,需要20到30秒,但在许多财务网站,他们可以每秒更新价格,而无需使用Ajax。
<?php
/**
* Class to fetch stock data from Yahoo! Finance
*
*/
class YahooStock {
/**
* Array of stock code
*/
private $stocks = array();
/**
* Parameters string to be fetched
*/
private $format;
/**
* Populate stock array with stock code
*
* @param string $stock Stock code of company
* @return void
*/
public function addStock($stock)
{
$this->stocks[] = $stock;
}
/**
* Populate parameters/format to be fetched
*
* @param string $param Parameters/Format to be fetched
* @return void
*/
public function addFormat($format)
{
$this->format = $format;
}
/**
* Get Stock Data
*
* @return array
*/
public function getQuotes()
{
$result = array();
$format = $this->format;
foreach ($this->stocks as $stock)
{
/**
* fetch data from Yahoo!
* s = stock code
* f = format
* e = filetype
*/
$s = file_get_contents("http://finance.yahoo.com/d/quotes.csv?s=$stock&f=$format&e=.csv");
/**
* convert the comma separated data into array
*/
$data = explode(',', $s);
/**
* populate result array with stock code as key
*/
$result[$stock] = $data;
}
return $result;
}
}
$objYahooStock = new YahooStock;
/**
Add format/parameters to be fetched
s = Symbol
n = Name
l1 = Last Trade (Price Only)
d1 = Last Trade Date
t1 = Last Trade Time
c = Change and Percent Change
v = Volume
*/
$objYahooStock->addFormat("snl1d1t1cv");
/**
Add company stock code to be fetched
msft = Microsoft
amzn = Amazon
yhoo = Yahoo
goog = Google
aapl = Apple
*/
$objYahooStock->addStock("msft");
$objYahooStock->addStock("amzn");
$objYahooStock->addStock("yhoo");
$objYahooStock->addStock("goog");
$objYahooStock->addStock("vgz");
$objYahooStock->addStock("FB");
/**
* Printing out the data
*/
?>
<table width="100%">
<tr>
<th>Row</th>
<th>Code</th>
<th>Name</th>
<th>Last Trade Price</th>
<th>Last Trade Time</th>
<th>Change and Percent Change</th>
<th>Volume</th>
</tr>
<?php
foreach($objYahooStock->getQuotes() as $code => $stock)
{
?>
<tr>
<td><?php //print_r($stock); ?></td>
<td><?php echo $stock[0]; ?></td>
<td><?php echo $stock[1]; ?></td>
<td><?php echo $stock[2]; ?></td>
<td><?php echo $stock[3]; ?></td>
<td><?php echo $stock[4]; ?></td>
<td><?php echo $stock[5]; ?></td>
<td><?php echo $stock[6]; ?></td>
</tr>
<?php
}
?>
</table>
据我所知,而无需刷新页面或AJAX可以从服务器使用获取数据http://socket.io/#how-to-use – yashhy