|
fclose
Closes an open file pointer
(PHP 4, PHP 5)
Example 624. A simple fclose() example<?php Related Examples ( Source code ) » fclose Examples ( Source code ) » fgetss Gets line from file pointer and strip HTML tags Examples ( Source code ) » Encoding Data Examples ( Source code ) » Close a file after reading Examples ( Source code ) » Checking That a File Exists Examples ( Source code ) » Reading from a File Examples ( Source code ) » Writing and Appending Content in a File Examples ( Source code ) » Write content to file Examples ( Source code ) » Writing and Appending to a File Examples ( Source code ) » stream_filter_append Examples ( Source code ) » Read text file with format Examples ( Source code ) » Read in and perform operations on a file line by line Examples ( Source code ) » Write string to text file Examples ( Source code ) » How to add text to the file Examples ( Source code ) » File based page counter Examples ( Source code ) » Loading table data from a CSV file Code Examples / Notes » fclosewilliamhamby
Trying to understand how 'end foreach' and 'endwhile' differ, I've encountered a problem I can't solve by myself. The following is a fairly easy stock portfolio script. Everything works, except at the end where I want to calculate the average of the gains as represented by $gain[$i]. <?php $quantity="3"; $stocks=array("iso","grn","bdgr.pk"); $buydates=array("3 jan 2006","1 feb 2006","3 apr 2006"); $prices=array("0.32","0.20","0.95"); $recommends=array("hold","strong buy","buy"); $i=0; echo"<tr>"; echo "\n<th align='center'>ticker</th>"; echo "\n<th align='center'>buy date</th>"; echo "\n<th align='center'>price $</th>"; echo "\n<th align='center'>recommend</th>"; echo "\n<th align='center'>value $</th>"; echo "\n<th align='center'>change %</th>\n</tr>\n"; foreach($stocks as $stock) { $fp=fopen("http://","r"); $data=fgetcsv($fp,1000,","); $values=$data[1]; echo "<tr>\n<td align='center'>".$stock."</td>"; echo "\n<td align='center'>".$buydates[$i]."</td>"; echo "\n<td align='center'>".$prices[$i]."</td>"; echo "\n<td align='center'>".$recommends[$i]."</td>"; echo "\n<td align='center'>".$values."</td>\n<td align='center'>"; echo $gain[$i]=round(((($values-$prices[$i])/$prices[$i])*100),2); echo "</td>\n</tr>"; fclose ($fp); $i++; } echo "\n<tr>\n<td align='center'>".$gain[$i]."<td>\n</tr>\n"; ?> Help? mark
It is very important to make sure you clear any incoming packets out of the incoming buffer using fread() or some equivalent. Although you can call fclose() the socket does not actually shut down until the inbound packets have been cleared. This can lead to some confusion.
jricher
It is a GOOD_THING to check the return value from fclose(), as some operating systems only flush file output on close, and can, therefore, return an error from fclose(). You can catch severe data-eating errors by doing this. I learned this the hard way. james r. steel
In response to kumar mcmillan 'gotcha' note below, we get a different result on a W2K machine: <?php $file_pointer = fopen('textfile.dat', 'r'); fclose($file_pointer); echo '$file_pointer is resource = ' . (is_resource($file_pointer) ? 'true': 'false'); ?> output: $file_pointer is resource = false kumar mcmillan
gotcha: <?php $file_pointer = fopen('data.dat', 'r'); fclose($file_pointer); echo '$file_pointer is resource = ' . (is_resource($file_pointer) ? 'true': 'false'); ?> output: $file_pointer is resource = true daniel7 dot martinez
Generally, it's always a good idea to close a file when you're done with it. It's very easy for something to go wrong and corrupt a file that hasn't been closed properly. If you're concerned about efficiency, the overhead is negligible.
kit dot lester
fclose() also clears any locks on the file, so if another process was being kept waiting for the lock to be cleared, fclose()ing will allow the other process to continue. [Another "just-in-case" reason to habitually fclose() all files as soon as practical!] sineld
Do not forget, if you are going to read the contents of the file which you have already written via fwrite() or else you have to close the file first.
|
Change Languagebasename chgrp chmod chown clearstatcache copy delete dirname disk_free_space disk_total_space diskfreespace fclose feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents file fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype flock fnmatch fopen fpassthru fputcsv fputs fread fscanf fseek fstat ftell ftruncate fwrite glob is_dir is_executable is_file is_link is_readable is_uploaded_file is_writable is_writeable lchgrp lchown link linkinfo lstat mkdir move_uploaded_file parse_ini_file pathinfo pclose popen readfile readlink realpath rename rewind rmdir set_file_buffer stat symlink tempnam tmpfile touch umask unlink |