```php title="PHP" batchExtractFilesAsync($files); // Do other work while extraction runs... processOtherTasks(); // Block until all results are ready $results = $deferred->getResults(); foreach ($results as $i => $result) { echo "{$files[$i]}: " . strlen($result->content) . " chars\n"; } // With timeout $deferred = $kreuzberg->batchExtractFilesAsync($files); $results = $deferred->waitBatch(10000); // 10 second timeout if ($results !== null) { foreach ($results as $result) { echo $result->content . "\n"; } } else { echo "Batch extraction timed out\n"; } // Procedural API $deferred = batch_extract_files_async($files); $results = $deferred->getResults(); ```