[tags]geocoding, caching, REST, symfony, Cache_Lite, php, cache, sfFunctionCache[/tags]
For reviewsby.us we do a lot of geocoding. To facilitate we use Yahoo! Geocoding API. This helps us normalize data, obtain latitude and longitude, interpret location specific searches.
These REST queries happen a lot and will continue to happen, but this data that Yahoo! provides is fairly static. We're basically querying a database of sorts. So it makes sense that we should cache this data.
We'll demonstrate how to cache these queries using symfony's sfFunctionCache class.
I wrote a wrapper (I'll release it as a plugin if requested) for the Geocoding API, the bulk of the work (the REST call) occurs in a function called doQueryGIS:
The call to this function is always wrapped with queryGIS:
This wrapper creates a sfFunctionCache objet and calls the function and caches it for subsequent queries.
What this means is once Yahoo! teaches reviewsby.us that India is located at (25.42°, 77.830002°) and that the precision is 'country' we remember it in the future.
These features will be incorporated into future versions of reviewsby.us.



Hi. Could you please release your geocoding wrapper as a plugin?
Kay,
I’ll work on that sometime this week. It’ll be very alpha.
Here is a zip of the class file, didn’t have time to pluginify it.