Earlier in the year I was part of the team that put live a new site for my employer, moving from a predominately flat HTML site with a little PHP to one using Drupal 7. Here I will go through some of the issues that have been encountered around performance and the steps that I lead to improve site performance over time and as new features have been added.
Please note this is not my site so at times I don’t go into lots of detail around numbers.
A lot of my past software development background has been around client/server in financial markets, with the main RDBMS use in Sybase, but also MS SQL Server and Oracle. In most cases stored procedures is the way to query and manipulate the database. There are a number of reasons for this including security, performance and centralised business logic out of the client.
Now in recent years I have made the move to web development in PHP, and in most cases using MySQL as the database server. From personal experience of others code, and available FOSS systems, it is extremely rare to see use of MySQL stored procedures behind web sites. They are there, have been for a number of years, and do work. So why is this so?
The first reason I could understand, was that they are a MySQL 5 feature, and most FOSS apps set their MySQL minimum requirements at version 4.x.
I now understand a 2nd and crucial reason, thanks to a post by Jay Pipes. MySQL stored procedures are not the same as Sybase or MS SQL. The shared compilation performance benefit is not there in MySQL 5.0/1 for non persistent or pooled connections. ie. most smaller to medium web sites. Their usage may actually be to the detriment of performance.
So stored procedures can have a use in MySQL, but mostly in limited use cases.
If you are looking to create dynamic functionality on a web site, there are no shortage of options for the server programming language. So why use PHP?
I have begun the search for a software application to manage project tracking and collaboration. It will need to be browser based so I can have it used internally and externally for Aura Media. Using PHP as the scripting language is the preference as that is what I am most comfortable with, but I am not against a solution that used Python or Ruby. The last requirement is a free and open source license.
In the past I have been a happy Mantis user for bug and issue tracking. So much that I have installed it in a few client sites. However now I want a broader product that includes time tracking and more collaboration features. Also Mantis is showing its age in a visual sense, and this can put off less technical users. Project tracking is the aim, not project planning with features like gannt charts.
In the past I did look at ActiveCollab, but they changed their license, and
Streber, but it was immature and moving in a more wiki direction.
My current investigation list is:
ProjectPier (activecollab fork)
- the terribly named
OpenGoo (another activecollab fork)
- Redmine (RoR based)
Open to any other suggestions.
I have seen a few list recently of essential applications people install on their PCs, so I thought I would put together my own list:
For web development
- Firefox, with the following extensions:
For Windows apps:
- Mozilla Thunderbird
- YAReg for dual booters needing to access Linux partitions