Your file contains multiple worksheets? If Yes, do you need all at the same time? One possibility would be to say to the reader the sheet to load, to do multiple passes if necessary.
For a given worksheet, you can perhaps recover data in several times, through a readFilter, storing them in a temporary table (and not in memory).
You will find examples of implementation in document "PHPExcel User Documentation - Reading Spreadsheet Files", chapters 4.2 and 4.3.
To combine with the use of the cache as you did.
Add debugging information during the various stages for memory used
For a given worksheet, you can perhaps recover data in several times, through a readFilter, storing them in a temporary table (and not in memory).
You will find examples of implementation in document "PHPExcel User Documentation - Reading Spreadsheet Files", chapters 4.2 and 4.3.
To combine with the use of the cache as you did.
Add debugging information during the various stages for memory used