2013-04-18 3 views
0

Я создаю сайт анализа запаса, чтобы использовать информацию о запасах, такую ​​как история цен и т. Д. Я буду реализовывать некоторые из своих собственных алгоритмов, как только получаю данные, но у меня возникают проблемы с получением исторических данных. на бесплатном веб-сайте biz.nf. Включенный файл connect.php содержит всю необходимую информацию sql и подключается к базе данных. У меня есть проверки ошибок, поэтому я знаю, что это не проблема. Я также пытался скопировать/вставить ссылки вручную, и они работают, поэтому я правильно создаю URL. Я наткнулся на некоторые подобные темы на этом веб-сайте и на других, но я не вижу ясного решения, как исправить это или ясную причину, почему это происходит. Яблоко блокирует меня? Кроме того, я хотел бы упомянуть, что я совершенно новичок в программировании php, но у меня есть серьезный опыт работы на C и C++, поэтому, пожалуйста, подумайте об этом, если вы можете помочь. Спасибо заранее!PHP file_get_contents error

Вот мой код для файла 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 блокирует меня, есть ли способ обойти это? Есть ли другой способ получения всех исторических данных запаса?

+0

Есть ли у вас правильная настройка разрешений на сервере? Он отказывается от связи, поэтому там что-то не так. – brbcoding

+0

Как я уже сказал, я совершенно новичок во всем этом веб-программировании, поэтому я не уверен, что вы имеете в виду. Я понимаю концепцию разрешений, но вы могли бы немного разобраться? Возможно, дайте пример, что может быть неправильным, какое разрешение у меня неправильно. – yot

ответ

1

Вы уверены, что ваш виртуальный хостинг позволяет подключение к удаленному URL - маловероятен

Наиболее общие узлы, как правило, не устанавливать allow_url_fopen истины в php.ini

Может попробовать использовать локон вместо