Posted on

Understanding and Detecting Magento Extension Clashes or Conflicts

This article will give an overview of Magento extension clashes (sometimes called conflicts) and then run through a few ways you can find them in your installation.

I get asked at least once a week a question like ‘What is a Magento Extension Clash‘ or ‘How Do I Find Extensions that Conflict‘. So, if you’re reading this, you probably just asked me, and I probably just sent you a link to here. That was a bit meta-blog, sorry about that. On with the article.

What is a Clash?

Magento extensions can override core functionality using what’s called a class rewrite. That’s when your extensions configuration file tells the core of Magento to use your custom PHP class, instead of the core one. Typically the custom class will sub-class the core one, and only override the methods that need to be changed. Here’s an example of that, firstly showing a snippet of rewrite xml for a core model:

<!-- ... snip config.xml ... -->
        <models>
            <core>
                <rewrite>
                    <email>Aschroder_Email_Model_Email</email>
                </rewrite>
            </core>
        </models>
<!-- ... snip config.xml ... -->

And then the corresponding class, notice it overrides the core version:

 
class Aschroder_Email_Model_Email extends Mage_Core_Model_Email {
 
// only add methods here that override the ones we want to change in Mage_Core_Model_Email
 
}

So that’d all be well and good if everyone only installed my email extension in their Magento store, but they don’t. They install PDF email attachments, email emoticons, email monkeys and god knows what else. So the rewrite that my extension needs to work, may very well not happen, because another extension rewrites the same class.

The same sorts of things can happen all over Magento, and typically the bigger and more complex and extension is, the more rewrites it will need, and the bigger the surface area for conflicts and clashes.

You might be thinking: “Gosh, it’d be great if Magento Connect ran some sort of rudimentry test for compatibility before installing extensions willy-nilly in Magento Stores” and if you are, that means you’re one of the Good Guys™.
Continue reading Understanding and Detecting Magento Extension Clashes or Conflicts

Posted on

Magento Development and Deployment: Setting up a Modman based Magento project on Magento 1.5

As I had noted earlier this week, I have not had a lot of Magento development time lately, so today I thought I’d spend a bit of time setting up a Magento 1.5 development environment on my Mac. This post will take you through the steps to set up Magento development with Eclipse for editing/debugging and SVN for version control, with deployment being managed by Modman. This relates to the project structure I described in my presentation at Magento Imagine, with the exception that I won’t go into detail about setting up a separate extensions repository, as that is probably more relevant to developers who build and release extensions than developers working on a single Magento project.

What this guide assumes:

  • Mac development environment with MAMP
  • Linux production environment
  • SVN for version control, but Git can work too.
  • Modman for deployment. Written by Colin Mollenhour

What we will cover:

  • Installing SVN, Magento and Modman.
  • Getting a free SVN repository.
  • Setting up a Magento store development project with version controlled extensions, templates/themes, locale and emails.
  • Development and deployment of changes to Production.

We have a lot to get through, so let’s not delay.

Step 1: Install Magento Locally

We’ll zap through a commandline install. We’ll be installing into your web server doc root. If you would like help setting that up I wrote a guide to installing MAMP on a Mac (a long time ago) and also (extra for experts) a guide to setting up virtual hosts on MAMP too.

#In your ~/Downloads directory or some where suitable
wget http://www.magentocommerce.com/downloads/assets/1.5.0.1/magento-1.5.0.1.tar.gz
tar xzf magento-1.5.0.1.tar.gz
# I keep all of my Magento development versions in a web folder within ~/Documents
mv magento ~/Documents/web/magento/1.5.0.1

Continue reading Magento Development and Deployment: Setting up a Modman based Magento project on Magento 1.5

Posted on

Google Apps Email/Gmail Magento Extension v0.5 released

It’s been a while since I have written any updates on my Gmail and Google Apps email extension for Magento. I have just released version 0.5 and thought now would be a good opportunity to write a quick update on the changes and what I have planned for SMTP email support in Magento.

Version 0.5 of Google Apps Email/Gmail Magento Extension

Firstly the changes in the latest release of the Google Apps/Gmail Magento extension. Both have been inspired by user feedback so two ‘thank you’s to follow. Firstly thanks to Blue Acorn for pointing out the lack of multi-store capability on the self test. It’s actually a little clunky getting the store parameters in the admin of Magento, my custom button needed to add the parameter like so:

$buttonBlock = $this->getElement()->getForm()->getParent()->getLayout()->createBlock('adminhtml/widget_button');
 
$params = array(
    'website' => $buttonBlock->getRequest()->getParam('website')
);
 
$url = Mage::helper('adminhtml')->getUrl("googleappsmailtest", $params);

And then the controller needed to actually pick up which Magento store to get the config for:

$websiteModel = Mage::app()->getWebsite($this->getRequest()->getParam('website'));
 
$to = Mage::getStoreConfig('contacts/email/recipient_email', $websiteModel->getId());

The other change was a bit of a curve ball. I had a Magento + Gmail user named Matt contacted me with what seemed to be an unrelated issue. I have been poking around in the installation code trying to figure out what has been happening. It wasn’t until I did a full fresh install on Magento 1.3.2.3 that I noticed what was going on. My extension has a dependency on Mage_Core (obviously, right?) and the wiki guide on how to package Magento extensions says to include this dependency. However if you do then the downloader will download the Core files and a whole bunch of other required files. This is no problem if you have been a good boy or girl and made your changes to the themes outside of the default files, but if you have changed the default templates then there is a risk of your changes being lost!

So, the change is to remove this dependency, even though the guide says it should be there. It’s kind of obvious that you need Magento in order to run my extension anyway!

Magento SMTP support

The other update I wanted to post was that I am working on porting my Magento Gmail / Google Apps extension to also support full SMTP capability. I will be releasing the changes as a new extension, as it is important to me that the original goal of this extension (extreme simplicity and ease of use) is not lost under the weight of full SMTP configuration.

I know that there is already an older SMTP extension for Magento. I think I can improve upon it in several ways, I have developed Magento SMTP self test capability, and I have support for Magento newsletter sending. The current SMTP extension hasn’t been updated for nearly a year, and I have an opportunity to create a more modern, user friendly extension.

I’ll be working on it over the next few days and would invite feedback from anyone with ideas on ways to improve the Magento SMTP functionality.

Posted on

Magento Hosting Review: Crucial Web Hosting

It’s been a while since I have done any of my Magento Hosting Reviews but I’ve finally gotten around to reviewing Crucial Web Hosting. Ages ago (I mean months) a reader specifically requested I review Crucial for their Magento hosting capability, and they were very keen to participate.

Crucial have gone ahead and pre-installed Magento on one of their split shared hosting programs. I’ll talk a little about what that means during the review. Crucial have also kindly offered to keep their Magento demo install up and running so that you guys can try the Crucial Magento demo out for yourselves.

In this Magento Hosting review, just as with my others I’ll be looking at the hosting proposition itself, the value and the price and how they stack up. I’ll also look at the responsiveness of their data centers and comment on the general access levels the hosting provides.

Crucial Web Hosting

I noticed that my last Magento Hosting Review became a bit of a monster and probably put a lot of people off because it was too long and not that well structured. This time I’ll try and give the whole review a little mini-index so that you can jump to the parts you actually want to read about, if you are not interested in the whole thing.

The Hosting

In this section I’ll discuss the actual hosting solution offered by Crucial. I’ll look at the hardware they’re operating, explain the notion of split-shared hosting and how that relates to other shared hosting solutions. I’ll try to weigh up the offering with other similar solutions for value.

Right off the bat the hardware offering is definitely high-end. The Crucual website claims “Quad Core Intel Xeon Harpertown 3.0 GHz, 32 GB DDR-2 RAM, 15K.5 RPM hard drives, and a Gigabit uplink”. I checked this out on the command line and sure enough 8 3GHz processors from cat /proc/cpuinfo! A look at the output of top on the box reveals the beast is hardly even raising an eyebrow at the work it’s doing, an avg 0% cpu usage and over half the RAM is free. Although this is a shared hosting solution, it is definitely not a machine that is being over worked or put under any pressure by too many clients having to share the same hardware.

Split-shared hosting is a way to divide up the available computer resources (the hardware) among more users without having to share the resources with so many people.

In a traditional shared hosting arrangement all of the users on a server are in the same ‘system’. That means they are basically all users on the same Linux box. If everyone is playing nice then there’s not too much of a problem with that. Provided the host is not overselling. The problem is that with so many clients on a box, if one of them has security problems, or get’s ‘slashdotted’ then the entire system is put at risk.

With split-shared hosting the single Linux box is virtualized into several small Linux boxes. Each is not a real server, but a virtual one isolated from the others by a special underlying piece of software. Each virtual server has it’s own allocated resources which means that if someone in a neighboring virtual server is slowing a server down, it will not affect your virtual server.

Does this really help? Well, yes and no, there is much less chance that you’ll be affected by the shenanigans of one of the clients you share with, when there are fewer of them, but you are fundamentally still sharing a server with others and exposed to the problems that can accompany that. So it’s better than pure shared hosting, but still no match for a VPS or an actual dedicated server.

Now that we know how the hosting works and how grunty the servers are, what do you get for your money? For $25/ month (less if you pay in advance) you get 50GB of bandwidth and 5Gb of storage space. With ecommerce I always think that if someone is doing 50GB of bandwidth they probably have tens of thousands of visitors and should be making enough sales to warrant a much bigger hosting solution, so bandwidth is probably nothing to worry about. With disk space, 5 gigs is probably more than enough for most webstores, even if you used ultra high-res product photos (say 300kb) and had 3 such images per product, that would be 4500 products (with leftover for the actual Store install etc). In general for small Magento stores the disk space and bandwidth will be adequate. For larger ones, do not look at shared hosting!

To put the price in context, for the same monthly amount you could get the SIP account from Nexcess which in my review I do really rave about. How does Crucial’s Magento hosting option stack up in the performance stakes against Nexcess’s Magento optimized SIP? Read on 🙂

The Performance

I normally look at page load time and latency when deciding how well a Magento host performs. To test latency I use the free and excellent service just-ping.com. The results of the test against the Crucial Demo server show that the ltency to large parts of the world in in and around that 100ms sweet spot. Us poor antipodeans in NZ, Aus and SA get a bit slow communication, but hey, no-one cares about that right?!

The Watchmouse service is excellent for looking at page load times. I have run the tests and the results are shown below:

WatchMouse test results for the Crucal Magento Demo
WatchMouse test results for the Crucal Magento Demo

And here is even more!

Even more WatchMouse test results for the Crucal Magento Demo
Even more WatchMouse test results for the Crucal Magento Demo

What’s interesting is that even though this is a shared host and there is no advertised performance optimizations carried out on the Magento install, the response times are snappy (around or under 1 second) in most places the tests are run from. That’s really good to see, and if you actually browse around the demo you’ll get a feel for how punchy the pages show up.

Access and Support

Of all the hosting companies I have dealt with I’d have to say I have never had any real problems with the service. Crucial is no exception, the contact I dealt with at Crucial has been polite and really helpful, setting up Magento and installing sample data, responding really quickly to emails and tickets and generally being the good host everyone says they are.

The server access is top notch as well. SSH access is granted by default, and the initial support ticket had all the access details required. Anyone who has approached me for Magento installation help/advice will know that as soon as someone tells me they only have cPanel or (far far worse) only Plesk access, I normally run for the hills and advise others to do the same. As far as I am concerned if you are serious about running a webstore and you want at any time to get a professional involved in support or customizing your store, you need to have the ability for them to access your server using SSH.

Conclusion

Geez this is really tough for me to say! On paper I’d say Nexcess’s SIP looks the better plan for the same money, it’s been optimized for Magento and offers slightly more value. But, I’ve tried out the Crucial demo, I’ve looked at Crucial’s server and I have to say it is as fast or faster, the support is great and I can’t really fault them either. In the end it will probably come down to preference. Both companies offer a money back first month, so perhaps you should sign up for both and decide for yourself based on your interaction with their support and sales team!

PS: As with my other reviews I’m inviting feedback from my readers on personal experiences with the hosting company, because often (as was the case with Simple Helix) the negative experiences that come out of the woodwork can be a real influence in the hosting choices we make.

Posted on

Nexcess Magento SIP Hosting Review

This is a Magento hosting review for Nexcess Hosting. Savy readers will recall, Nexcess sponsored my last Free Magento Hosting competition by giving away one year of free hosting on their entry level plan.

For this review I’ll be looking at the latest offering from Nexcess, the Magento SIP platform. This is a purpose built ecommerce hosting environment that is both secure and optimized. In this review I’ll look at what that security means, and also be running some tests for performance. I have a demo Magento SIP environment set up that you can try, to see for yourself how fast it is.

If you can’t be bothered reading the review below, my bottom line is; if you are prepared to spend the money, this is the fastest, most convenient Magento hosting solution I have seen to date, get it here.

Continue reading Nexcess Magento SIP Hosting Review