Установка времени ожидания для чтения SplFileObject из удаленного файла aws s3
Я читаю файл построчно прямо с сервера aws s3, используя SplFileObject.
$url = "s3://{$bucketName}/{$fileName}";
$fileHandle = new \SplFileObject($url, 'r');
$fileHandle->setFlags(SplFileObject::READ_AHEAD);
while(!$fileHandle->eof()){
$line = $fileHandle->current();
// process the line
$fileHandle->next();
}
Это прекрасно работает в 99% случаев, за исключением случаев, когда работает цикл и возникает временный сбой в работе сети. Скрипт не может получить доступ к следующей строке из s3 в течение x секунд и преждевременно завершает работу. И проблема в том, что вы никогда не знаете, завершил ли скрипт свою работу или вышел из-за истечения времени ожидания.
Мой вопрос здесь
1- есть ли способ явно установить время ожидания для SPLFileObject при доступе к удаленному файлу, чтобы при выходе из цикла я мог понять, завершился ли он из-за истечения времени ожидания или файл действительно достиг значения eof.
Я проверил stream_set_blocking и stream_set_timeout, но они оба, похоже, не работают с SplFileObject.
2- Какое значение тайм-аута, что этот сценарий в настоящее время следует? это socket_timeout? или stream_timeout или curl timeout? или просто тайм-аут сценария php (что маловероятно, так как сценарий запускается из командной строки).
Есть намеки?