PHP не подходит для обработки больших данных.
Напиши на java. Или на С++ сделай расширение. На С++ получается практически дословно. Т.е. переписываешь свою тормозную функцию на С++ в виде расширения и радуешься.
https://github.com/CopernicaMarketingSoftware/PHP-CPP
Например вот этот код на php
function get_complex_array()
{
return array(
"a" => 123,
"b" => 456,
"c" => array("nested_value","example")
);
}
на С++ будет выглядеть так:
Php::Value get_complex_array()
{
Php::Value r;
r["a"] = 123;
r["b"] = 456;
r["c"][0] = "nested value";
r["c"][1] = "example";
return r;
}