设置从远程aws s3文件读取SplFileObject的超时

时间:2018-02-13 06:22:24

标签: php spl splfileobject

我正在使用SplFileObject直接从aws s3服务器读取文件。

$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_blockingstream_set_timeout,但它们似乎都不适用于SplFileObject。

2-此脚本目前遵循的超时设置是什么?是socket_timeout吗?或stream_timeout或curl超时?或者只是php脚本超时(我猜这是非常不可能的,因为脚本在命令行上运行)。

任何提示?

0 个答案:

没有答案