I've been a bit distracted lately (damn those video games!) but I was working on finishing up the last big "feature" before v8.0. Yea, that's right, we're skipping the next point release and going all the way, but it's going to be a bit longer before it comes out. I was going to make the changes to implement .ioftpd.cache to speed up directory loading with large fanout dirs before I got annoyed at some of the extra overhead, duplicated work, etc and decided to just go ahead and re-write the directory caching logic. I'm not really sure how this will turn out, but I'm hoping we'll see something like a 30% performance increase in caching a directory over the old code doing the exact same thing. More importantly the changes should allow for caching very large numbers of directories which might help some sites whose machines have memory to spare.
Two important notes. The first is I think I uncovered a bug that could be the cause of memory corruption on sites with lots of uploading going on in some situations. Since it's in code getting re-written entirely I didn't take a good look at it, but I will. If it's an issue I think I'll try a new 7.x release with this and perhaps 1-2 other small things just to see if it helps stability or not. The other thing is given how massive the changes are I don't think I'll actually implement the .cache file stuff in v8.0. I really need to prove all the new changes actually work without breaking anything before introducing a whole new level of complexity. That will however be the key 8.1 feature since that could reduce the time to enter any directory (besides the very first time) to nearly zero even after a restart which should solve one of the problems people have complained about after a crash...
Oh, and just because I think it's kinda cool, I'm playing with supporting directory tree size information. This would mean the size you see in listing would be the sum of everything under that directory (excluding linked dirs). Because this would have a performance impact it will be an option, just like you can choose to always report 0 size right now to speed up some listings.
|