
Updated with more tests on 2010-05-16.
Click here to jump to the 2010-05-16 update…
The conventional wisdom always said that PHP’s include()/require() was quicker than include_once()/require_once(), but recently I came across an interesting post by Arin Sarkissian which suggests otherwise. Also I found more commentary on the performance benefit of using relative versus absolute paths in include()/require() and include_once()/require_once() statements (although the main article’s conclusions contradict Arin’s experiments). The Drupal developers discussed and benchmarked the relative/absolute include() issue too.
So in keeping with the spirit of quick and dirty experimentation I hacked up some code and ran some tests on include()/require() against include_once()/require_once() and on the relative/absolute path issue. The results are pretty surprising and I love to hear some views.
Continue reading ‘PHP: The include() include_once() performance debate’ »
The symptom
You cease your contract with your hosting company, cancel your contract and move your web site. People start to complain that they cannot reach your web site. Nothing seems out of order.
The problem:
You were hosting with a major ISP (like Eircom, Magnet or BT Ireland). They put DNS entries into their servers for your web site. When you cancel your contract they should remove these entries. Magnet and BT Ireland are two companies that are negligent in this regard. If they don’t remove these DNS entries, then their customers can have problems reaching your new web site.
Continue reading ‘Beware: ISP’s as Hosting Companies – watch your DNS’ »
Very useful if you run as a ‘restricted user’ (i.e. not a ‘power user’ or ‘administrator’):
Step 1: Get a CMD shell (‘DOS box’) as Administrator:
runas /user:administrator cmd
Continue reading ‘Using Runas to Add/Remove Programs/Hardware in Windows XP’ »
Symptom:
- An XML file saved as something.php.html
- Apache was trying to parse it as PHP and throwing an error because Short_open_tag was ‘on’
Fix:
Add the following to an .htaccess file in the folder (or a parent folder):
php_value short_open_tag off
I don’t know if this is a ‘bug’ or a ‘feature’. I don’t see why Apache should be interpreting *.php.html files as PHP (BAD Apache) but now that the issue is fixed for me I am not too concerned.
Update: 2010-05-07:
Kae Varens already came across this and blogged about it in October 2008. It turns out that
- it’s Apache – not me!
- there is a lot more to this than meets the eye
If you manage your own Apache web server then Kae’s blog post is required reading.
A client was approached the other day with an offer that sounds too good to be true. Well guess what, it is!
For more information, Webphoria (a UK web development company) has the story of the AdWords scam, and James from Online Media Direct checked it out the story with Google.
If you are approached with such an offer, make sure you check out the facts. We’ll be quite happy to do so for you if you wish.
UPDATE:
And the muppet is… http://www.polepositionmedia.co.uk/ just in case you were curious!
There are lots of examples and tutorials covering Apache and mod_rewrite, but generally they address the problem where you want to map a ‘nice’ url to your script. For example:
http://example.com/products/kitchen/cutlery
to
http://example.com/products.php?category=kitchen&sub-category=cutlery
is easily achieved with the following .htaccess rules:
RewriteRule ^([A-Za-z0-9\-]+)/([A-Za-z0-9\-]+)/([A-Za-z0-9\-]+)/? /one.php?action=$1&category=$2&subcategory=$3 [L]
However if you want to rewrite in the other direction it might not be immediately obvious that you cannot use rewrite rules with your GET URL variables. So if you want to go from
http://example.com/products.php?category=kitchen&sub-category=cutlery
to
http://example.com/products/kitchen/cutlery
you need to sniff the query variables as well as the script name.
Continue reading ‘Using Apache mod_rewrite to redirect old URLs’ »
Moving email servers has always been a royal pain for me. I’ve tried many of them over the years, and migrated from nearly as many of them. However the last couple of times I put myself through the pain I came across imapsync – an excellent script that will do an IMAP to IMAP migration across the wire.
Imapsync uses standard IMAP commands throughout, so is ideal for migrating from one brand of email server to another. (Of course there are still buggy IMAP servers out there, but well behaved ones will work fine.) It will transfer emails, folders, maintain message flags and folder subscriptions.
For best performance use the script on your new server (presumably it is much more powerful that the one you are migrating from) and make sure any obnoxiously large emails, junk, trash and other unwanted mail has been deleted (and expunged) first (see
Debug your IMAP server with Telnet for help with this.
Imapsync is written in Perl and is happy on almost any Operating System (yes even Windows!)
Email by IMAP rocks – there are so many benefits to using it over POP3, particularly in an office environment. However many IMAP clients really suck when it comes to manipulating accounts with large messages. We recently watched a server brought to it’s knees during a email server migration – by an 165MB email containing wedding pictures that someone had decided to forward throughout the network!
At that stage you are better off talking directly to your email server with Telnet.
Continue reading ‘Debug your IMAP server with Telnet’ »