Установка времени ожидания для чтения 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 (что маловероятно, так как сценарий запускается из командной строки).

Есть намеки?

0 ответов

Другие вопросы по тегам