sales_order_place_after is fire when
place() of order object is called and in magento every payment does not call place() when order placed.
Is only called when customer has been redirect to
checout/onepage/success. Also this event only called whenever order place from frontend and customer visit
MY suggestion, this two event not proper,We should be use
checkout_submit_all_after this event is fire when order place from frontend and backend.
it is fire immediate order place