sami_analyst
sami_analyst

Reputation: 1839

feof(): 3 is not a valid stream resource in

after i have installed windows 8 on my desktop and reinstalled aptana and xampp, i somehow can't use !feof($handle). i want to get the symbols of nasdaq stored in my $symb arra.here is an example and my error:

$symb = array();
$url = "http://www.nasdaq.com/screening/companies-by-name.aspx?letter=0&exchange=nasdaq&render=download";
$handle = fopen("$url","r");
while( !feof($handle) ){
    $line = fgetcsv($handle, 1024);
    if($line!="Symbol" && isset($line[0]) && $line[0] != null   ){
        $symb[] = trim($line[0]);
    }
    fclose($handle);
}

And my Errors :

Warning: feof(): 3 is not a valid stream resource in C:\xampp\htdocs\demos\screener\candleScreener.php on line 61

Warning: fgetcsv(): 3 is not a valid stream resource in C:\xampp\htdocs\demos\screener\candleScreener.php on line 62

Warning: fclose(): 3 is not a valid stream resource in C:\xampp\htdocs\demos\screener\candleScreener.php on line 66 .......

Is there a setting i have to change on the php.ini file or what could it be ? thanks.

    .....
$url = "http://www.nasdaq.com/screening/companies-by-name.aspx?letter=0&exchange=nasdaq&render=download";
$handle = fopen("$url","r");
$txt = fread( $handle, 8 );
print_r($txt);
    .....

prints out : "Symbol"

so my fopen() is fine ....

Upvotes: 0

Views: 14856

Answers (2)

jwbradley
jwbradley

Reputation: 11

I had the same problem in my code. I had an extra file close function in the code. In other words I was trying to write to the file for a second time and it was not open for use. I had this coded in the top of my program:

$newFile = $local_directory . $tenant.'-'.$namespace.'_Stats.xml';
$newDoc = fopen($newFile, "w");
fwrite($newDoc, $urlStats);
fwrite($newDoc, $response);
fclose($newDoc);

Then later I had:

fwrite($newDoc, $response);
fclose($newDoc);

Check to make sure the file is open before you write more content.

Upvotes: 0

user1864610
user1864610

Reputation:

The reinstallation and the fopen() are red herrings. You're closing the file handle inside the while loop, before the file has been read.

while( !feof($handle) ){
    $line = fgetcsv($handle, 1024);
    if($line!="Symbol" && isset($line[0]) && $line[0] != null   ){
        $symb[] = trim($line[0]);
    }
    // fclose($handle); // Move this outside the while loop
}
fclose($handle); // Moved this outside the while loop

Upvotes: 14

Related Questions