RE: [PHP] writing while reading

From: Date: Wed, 01 Aug 2001 15:07:29 +0000
Subject: RE: [PHP] writing while reading
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-60666@lists.php.net to get a copy of this message
try only locking the file on a write, *not* on a read. you are going to have many times more reads than writes, even on the busiest day.... what you need to have is a blocking-lock your writes and not bother with locks for reading. the way you have it setup now, there's no locking for writes, so you could definately have two instances of PHP trying to write to the same file simultaneously and corrupt your data. besides, if you lock only for writing, and not for reading, you can read the file while it's being written - but you can never write twice. > -----Original Message----- > From: Rui Barreiros [mailto:rui@websolut.net] > Subject: [PHP] writing while reading > hi all, > > i'm writing a web chat, the frame that presents the text, has a very fast > refresh (has to) it's about from 2 in 2 seconds, my problem is writing to the > file (chat is file based), when the refresh read the file, it doesn't let php > write. i made comething like this. > > Function chat2file($filename, $str) { > $fp = fopen("chats/$filename", "a"); > fputs($fp, $str); > close($fp); > } > > Function file2chat($filename) { > if(file_exists("chats/$filename")) { > $fd = fopen("chats/$filename", "r"); > flock($fd, LOCK_UN); > $content = fread($fd, filesize("chats/$filename")); > fclose($fd); > return $content; > } else { > return ""; > } > } > > i put the non blocking option in flock while reading but still blocks and > doesn't write, my question is it possible to write to a file while reading?!, > if so how? > > thx.

« previous php.general (#60666) next »