Unless there is some dependancy you haven't disclosed -- say, for example, that the content of the file currently being processed determines which file to extract and process next -- your desire to extract them one at a time is not a war-stopper; it is merely one alternative approach:
Pseudocode:
un7zip ($archive);
@todo = readdir (extracted files);
for $todo(@todo) {
process as you wish...
}