My problem is im creating a large nested PHP array which is parsing information from multiple external sources.
On the first return I would like to cache this data.
If you use Smarty template engine, it exists a plugin for v3.1 that enable APC (Alternate PHP Cache) as an op-code cache, you also have a built-in memory storage area for lightning fast access to data.
Available here : https://www.smarty.net/forums/viewtopic.php?p=86501&sid=efc098e0cfb090a94e8c0d362c609263#86501
You could try to cache to a file:
file_put_contents("cache_file", serialize($myArray));
Then to load the cache:
$myArray = unserialize(file_get_contents("cache_file"));
This will work if the things in your array are serializable: no DB connections or file handles, or things like that. Strings and numbers are just fine.
If you need something fancier you can use a memory-based cache like memcached.
have you thought about putting static $yourData = array(); in your method where you download the data then test whether theres any data in this static array and use that, overwise get the data? hope this helps in some way :D