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

Есть намеки?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]