Here is what's wrong.
First of all:
$event = $observer->getEvent()->getOrder()->getData();
This will get you an array
.
and when calling later
$observerdata = (get_class_methods($event));
You get nothing because $event
is an array
.
Then there is this:
$observerdata = print_r($observerdata);
After this $observerdata
will be 1
because that's what print_r
returns. Tip for the future: you can pass a second parameter to print_r
to get it to return the value instead of printing it. print_r($something, true)
.
Next thing.
You don't need t load the order again:
$orderId = Mage::getSingleton('checkout/type_onepage')
->getCheckout()->getLastOrderId();
$orderoverall = Mage::getModel('sales/order')->load($orderId);
The order is already passed to the observer. Get it like this:
$order = $observer->getEvent()->getOrder();
Now to get all the data replace:
$content = 'content here....' . $observerdata;
With
$content = 'content here....' . print_r($order->getData(), true);
There is no 'standard' approach to queuing within Magento per se. As you've probably seen there's a number of modules floating around that try and help with different messaging systems, for instance Lilmuckers_Queue. My guess is that only a small portion Magento projects end up needing some slow process sent to a job queue. Any performance gain for something like offloading an e-mail during checkout isn't worth the effort of the implementation and maintenance.
One thing to keep in mind is that its possible to have a message queue that is "highly available" thus not a single point of failure. If you have the time/resources it's possible to configure Redis (and other MQ servers) for failover. If you don't mind being "locked in" to AWS then using SQS would be a good option, especially if you're already using some of their services.
Which route one ends up going ultimately depends on the project, the technical team and organization. An internal engineering team of a large merchant would likely have the proficiency and staff required to implement such a solution. A freelancer or agency implementing a project for a small-ish client probably shouldn't over complicate the architecture (especially for the next team/person who ends up with the project).
Best Answer
checkout_onepage_controller_success_action
event fire whenever checkout/onepage/success page is rendered * ,other wise it does not fire*And
sales_order_place_after
fire whenever we call Mage_Sales_Model_Order object's functionplace()
called. And its calltotally depends on payment mathods configuration
*From my point of view it will better to use
checkout_onepage_controller_success_action
,use of after order payment ,you may be want to fire sms.