When we used to use Meni's scoring system, we were doing all the estimated in real-time. If implemented correctly (e.g., not doing the math in SQL) you guys shouldn't have a problem getting an estimate that is real-time as well.
What have you switched to (and why)?
We switched to ESMPPS, and the reason (frankly) was that we disliked the increased variance of scoring systems.
Can you elaborate on that? And doing it correctly would be implementing it in SQL or in the case of EMC, most of it is in done on the getwork server. Doing it in PHP is the absolute worst way to handle it.
Since we wrote our own pushpool replacement, we did all the scoring calculations there. You are correct, PHP wouldn't be the place to do them. Neither is SQL though. To do it right you'll want to do it in your pool backend, which is pushpool I'm assuming? You'll want to keep the shares in memory, and do your scoring computations off of the in-memory copy.