Apache questionFriday, June 08, 2007 by Dave Winer. The server that runs this site is running Windows 2000 and Apache for Windows. My CMS is the OPML editor. I use a desktop tool to communicate with the editor on the server via XML-RPC. When I save the document locally, it sends a copy to the server, where it renders it in HTML and writes a file in a folder that Apache serves from. There are two applications running on the server, one writes into the folder and the other serves from the folder. The first is the OPML Editor, the second is Apache. (There actually are other apps on the server, but I don't think they're part of the problem I'm describing.) This usually works fine, but one in 20 times (or so) there's trouble. When the editor tries to write the file, it gets an error, saying the file can't be accessed. When you try to access the file in a web browser (the home page of this site) you get an access error. (I'll link in a screen shot next time it happens.) The only way to clear the error is to quit the OPML Editor, restart Apache, and relaunch the OPML Editor. Then it all starts working, until it happens again. My current theory is that the OPML Editor is trying to write the file while Apache is reading it, and somehow this puts both programs into an untenable condition (the latter part is really confusing). So I guess the question is this -- is there any way for an app running on the same machine to lock a file, like a semaphore, to basically wait until Apache isn't using the file, causing Apache to stand by until the semaphore clears. There must be some way to avoid this, other than the manual workaround I've found. |