node.js + PHP/Zend + Events = Super quickly run fast

Posted By Taylor Romero | Mar 24, 2012
In an effort to address lag time we implemented some pretty neat (and surprising easy to use) open source solutions.

Server side, we are 95% PHP based; utilizing an in-house (but to be open-sourced in the next year or so =) event driven framework built upon Zend Framework and backed by Mongodb. We also have node.js running. Our framework has the ability to "dispatch events" from PHP to node.js, at which time they are pushed as events through socket.io to eagerly awaiting BidPads.

But hold on, I'm getting waaaaaay ahead of myself. I should start with some back story:
 
Our iPad client, affectionately referred to as Mr. BidPad, is rebuilt, natively, in Objective-C. Our first client was built with Appcelerator. Don't get me started.... No seriously.... don't.

Anyway, BidPad was having "up-to-date" problems. But, not in the way you'd expect. See, due to time constraints, the first auction that ran the new BidPads didn't pull updated "current bid" amounts until any particular item was selected. At that time, it would make a request to our REST APT for updated bid totals. This would not have been too big of a deal had "current bid" amount not been visible under each item's photo on the main effing screen.

Worst case, someone had to select an item to get its updated "current bid" amount. That's not too bad, right? Well, actually, not as bad as I had expected and especially not from whom I expected. The first person to actually file a "bid amount is wrong until you select an item" bug was a donor. She kept spying on what her donated item's current bid. I guess before Handbid, in the days of notepads and paper and pagers and horses, she would just have to walk up to the notepad next to her item to see what the bid was.

Well, she will sleep well tonight, or, really, she should have been sleeping pretty well a few days now. And I'm going to show you now!

BUT, because dojo editor strips out every single tag it doesn't like, I'm going to post a link instead of embedding the video, I don't have the energy to deal with it right now =)

https://vimeo.com/39111868