In short, PHP is not designed to work with such large data structures efficiently. None of this will change. Trying to work with PHP in a 256 MB VPS is very difficult, especially if you have a web server and a database server.
As I illustrated in your other question , SplFixedArrays uses less memory. This is a fact, and you can search the PHP source to find out how objects are created. Figures do not lie.
But this is just one piece of the puzzle ... If you store a lot of big things in an array or work with other data structures, it is possible that the array is not a memory bottleneck.
As for SplFixedArray::fromArray() , you are sure to add to your maximum use, because now you are creating two array structures. If you delete the temporary array, you will use less memory ... but in the interim you will use more.
You would probably use less peak memory if you just wrote your own function that moved the element of the temporary array one by one and added it to the SplFixedArray, since you would not duplicate the size of your data structure. (Actual savings may not be that big due to copy to write.)
Again, some tests are 1024 * 1024 in size with 64-bit integers in each slot:
SplFixedArray: 92,914,280 array: 218,756,976 SplFixedArray::fromArray 227,147,408 peak, 92,915,088 after
So, as you can see, if you load fromArray, you use more memory, but after the temporary array is deleted, it will return to saving. But since the goal is to minimize peak memory usage, using fromArray will be worse than just using arrays.