What has Dave been working on lately? Not blog posts, obviously. Here are the headlines…
- Full-Text Search
I created a full-text index on the post subject and text over a year ago to see if maintaining that index would cause any performance issues. I’m happy to say that I have not seen any challenges from inserts / updates with this index in place. I’m going to be altering the search screen to allow the full syntax offered by MySQL on this type of index and hope to release that in a few months. Some of the challenges I have not yet decided how to solve are things like limiting forums – either by security or user preference – and other criteria that can be entered on the standard search screen.
- Capture Post Revisions
I’ve also added some code to capture post revisions. We’ve had a couple of folks that come back to our board and edit their post, removing all of the text and leaving only something like “…” instead. This destroys the continuity of the topic, and as a result we’re going to now track post revisions by capturing the post text history. If needed a moderator will be able to review and then restore a prior post, and ultimately lock that post from further editing. As with the full text search I have done fairly extensive testing on how this is implemented in order to ensure that performance does not suffer, and I’ll have a few blog posts about that process. This MOD is completed and I expect to roll it out onto the main board in a few weeks. (FWIW, I first talked about this post several years ago, and am just now finally getting it completed.)
- Moderator Posts
I’ve added a new field to the post table that allows a moderator to designate whether it’s a moderator post or a user post. For example, moderators can certainly participate in a normal board conversation as a regular person. But they may also add posts in their role as a moderator. This new feature will format those posts differently so they stand out, will automatically remove the “personal” aspects of a post such as signatures, and does not increment a moderator post count for this type of post. It is intended to be a way for moderators to be able to separate out their moderator posts from their board participation posts. This MOD is also completed and expected to be released shortly.
- Including External Content
I’ve added some cron jobs that parse RSS feeds from several blogs owned by board members. Their blog posts are automatically set up as part of their signature (as “Latest Blog Posts”) and updated once an hour. For bloggers that our community wants to recognize, this is a great way for them to get additional exposure without having to manually update their signature every time they publish a new blog post. This part of the MOD is already in use on our board. Only board admins can currently enter blogger information, as we want to go through a review process and certify blogs rather than allowing just anybody to link to an external site. This was done by altering the administrator user edit form and leaving the regular user profile form alone.
As an extension to this, I’m also pulling in the content from the blog post and storing that in a hidden forum. As the blog posts are added to the forum they are obviously added to the full-text index because they’re part of the same table. I am also adding these posts to the standard phpBB2 search tables at the same time. That way if someone searches for term “X” and that’s found in an external blog post, they’ll see a link in their search results. The blog address is stored on the topic table and a different icon is used to show the user that they’re leaving our board and heading to an external site. I have all of the main work done; the last requirement is altering search.php so that it offers the ability to include / exclude external content and then react to that setting accordingly. I hope to get this completed in the next few weeks.
- Social Media Profile Links
I’ve added Facebook, Twitter, and LinkedIn fields to user profiles. These are displayed along with the other profile links, using smaller 18×18 pixel logos. I’m planning on going back and redoing the other profile links to use the same form factor but that part hasn’t been done yet. Here are the images I’ve made, using logos or other material provided by each service provider.
One thing that many of these MODs have in common is my concern for performance. We’re over 750K posts now, and still running extremely well on a server that is hosting several dozen sites, although none of them as active as our big board. Every time I touch the code performance is a primary goal. Another MOD that I’ve been planning is to port the phpBB3 posting form back to phpBB2 since it does a better job of supporting modern browsers as well as proving some additional formatting features. I haven’t even started on that yet, but I think it would be good. Now that I’ve personally switched to Chrome as my standard browser I’m noticing some interesting quirks.
So that’s what I’ve been up to for the past few months.
While I have not started in-depth MODding on phpBB3 yet, I do read the phpBB3 MODders forum from time to time just to start to get the flavor of how things have changed. The other day a database (query) question came up and I suggested an answer that I originally thought was only slightly different from what had already been proposed. However, after being asked which of the two solutions would be the least CPU intensive I did a bit more investigating.
I discovered that one solution was clearly better than the other, but only if the proper index was created.
Disclaimer: I tested on phpBB2. The index that I created does not exist in a standard phpBB2, nor does it exist in a standard phpBB3 install, so I suspect this post applies to both. More…
Some hosts overload their servers. No, really, it’s true. I know some of you know this, but many people don’t and are quite surprised when they ask me see what I can do to improve the performance of their board. One of the first things I do before taking on a client with this type of request is run a check to see how many other sites are hosted on the same server. If the number is over 100, I don’t bother doing much other than telling the potential client to get a better host. How do you find this out? It’s not hard, really.
Through some sort of technical glitch most of this post was missing. I’ve updated it with the rest of the content. My apologies.
A few days ago I posted Part III in my ongoing series where I am comparing phpBB3 to phpBB-Dave (my customized phpBB2-based board) from a feature perspective. I hopefully have made it clear that I am not claiming that my board is technically superior, as I am quite sure that it is not. The experimentation I did with the template engines several months back proved that, at the very least.
Part III included a review of the caching process for each board. A vanilla phpBB2 board does not offer any caching (outside of an early form of template caching). My version is caching quite a bit of information, as does phpBB3. I’ve reproduced that specific table here, as it will help clarify the points made later in this post.
One interesting result of Londonvasion for me was that I found out that there are team members that stop by and read my blog (at least occasionally) that don’t leave comments. DavidMJ, one of the current members of the phpBB3 development team, is apparently one of those folks. He caught me on IRC a few nights ago and offered to help explain the caching routines from phpBB3 and I was quick to take him up on his offer. Here is an excerpt from our conversation; I found it extremely enlightening.
Some time back I wrote the Forum Auth by Post Count MOD for phpBB2. I had to write it because so many people were using an “auto-group” MOD of some kind, and using it to grant permissions to view or post in specific forums. The general idea is good. In my opinion, the implementation is bad and can have a substantial negative impact on your board.
I am very excited that phpBB user Brainy has been working on an updated template engine for phpBB2. However, at the moment I can’t get it to work completely. Last night, when I was up late working on other things already anyway, I decided to finally take a look at the template options from the /contrib folder from a standard phpBB2 installation. I was glad I did.
As regular readers will know (I think I’m up to 3 of you now ) I have been doing some testing and preliminary analysis on some different template engines for phpBB2. However, I have since discovered that the alternate template engines I have been evaluating work fine on most pages but fail on the posting page. So at the moment I have tabled all further posting until I can get a template system that works for all phpBB functions, and not just the basic pages I was refreshing. It’s quite discouraging, as I was hoping to finish reviewing the numbers and roll out my selection on my largest board during our next update.
We’ll be sticking with eXtreme Styles for now. Further details will be posted once I get everything working.
About six or eight months ago I started noticing a really weird behavior from my server. It was always related to pages from my largest phpBB2 board. The first symptom was that the server would slow to a crawl. After connecting to the board via the web host manager or via PuTTY (if I could do either) I would see a system load of 50, 90, even 300+ at one point. When I say system load I am talking about the top-line number from the “top” command. In theory with a four-cpu box my system load should never be higher that 4.0, so a load of 300+ is quite… disturbing.
I checked and changed my apache settings. I checked my database settings. I kept checking and checking and tweaking and nothing made a difference. I finally resorted to blocking IP addresses that exhibited this behavior.
I think I may finally have figured out what was causing my problem. Believe it or not, it was some code in phpBB2. More…
I have been spending my free time working on my other board, so I have not managed to get the analysis done yet for the various template statistics that I captured. What I plan to do is keep exactly 1,000 page refreshes for each template for each trial. I will do this by taking the middle 1,000 results and tossing the best and worst times. This should help provide a better indication of the true performance of each engine.
I do, however, want to complete this before I relaunch the board I am working on as I will include whichever template engine performs the best with that upgrade. So hopefully I will be back to this in the next week or so. Thanks for your patience.
I have completed the data collection phase of the template testing. I have run 10 different scenarios all on my isolated development server. A couple of scenarios are going to be tossed from the final results due to bugs in code or collection anomolies.
So here is what I have to evaluate: