Re: Re: fopen

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks for that!
John

Richard Lynch wrote:

> On Sat, March 19, 2005 6:48 am, John Taylor-Johnston said:
> >  chmod($defaultfile, 666);
>
> http://php.net/chmod
>
> has examples that tell you exactly why this is wrong...
>
> 666 is decimal.
>
> The 666 you want is Octal.
>
> They ain't the same number.
>
> > What does the at_sign mean at the start of this line?
> >
> > @ $results = fopen($datafilename, "w+");
>
> @ means you are IGNORING any errors this generates.
>
> It's usually a really bad idea unless you have some more code for error
> checking.
>
> >  if (!$results) { die ("Our results file could not be opened for writing.
> > Your score was not recorded.  Please contact the person responsible and
> > try again later."); }
> >  flock($results, 2); #lock file for writing
> >  fwrite($results, $filestr); #write $filestr to $results
> >  flock($results, 3); #unlock file
> >  fclose($results); #close file
>
> This is an incorrect way to try to flock a file for writing.
>
> You should:
> 1) Open the file for READING.
> 2) flock that file handle, so only YOU have access to that file.
> 3) Re-open the file for WRITING, now that you have control.
> 4) Write your data
> 5) Release the lock.
>
> Your application, as it stands now, has a race condition between the open
> for writing and the flock, which sooner or later, WILL bite you in the
> ass.
>
> Probably.
>
> Maybe.
>
> If $filestr is small enough, the Linux OS has locking built-in.  Windows
> may or may not (and I don't care enough about Windows to remember, much
> less look it up).  FreeBSD and other OSes may or may not also have locking
> at OS layer.  I wouldn't rely on it, though, since it's trivial to do the
> 5 steps above.
>
> --
> Like Music?
> http://l-i-e.com/artists.htm

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux