"I'm a network admin by day and a PHP freelancer by night," Jarod writes. "It works pretty well. My clients (all two of them) assign me low-priority, get-it-done-whenever type projects, and I do my best to deliver 'soon' rather than 'later'. "
"During the day job, I got a handful of calls from an unrecognized number. When I finally had a chance to call back, it was a referral who was in 'very desperate' to fix his application. Apparently, they hired a graphic design shop to build them a CMS site, and it was slow as molasses. They spent weeks trying to improve things, but it just got worse. Fortunately, I was able to look at it that evening, and after digging through the project, I isolated the problem. It was coming from an addressbook view; their addressbook had 120,000 entries, and displayed 50 at a time,"
function getAlphabetList($list = null) { $alphabet = split(' ', 'A B C D E F G H I J K L M N O P Q R S T U V W X Y Z'); foreach($alphabet as $letter) { $has_letter = false; if(is_array($list)) { foreach ($list as $value) { if(substr(strtoupper($value),0,1) == strpos($letter,$value,1)) { $has_letter = true; } } } if($has_letter) { $output .= '<a href="?letter='.$letter.'">'.$letter.'</a> '; } else { $output .= $letter.' '; } } return $output; }
Jarod added, "in most cases this is just plain bad practice. But when checking 120,000 in the addressbook 26 times to generate a link list at the top of the addressbook view, it was definitely a bit wasteful."