3

我正在调用以下内容:

while ( (!file_exists('./download/ah141090676723_100.jpg')) || (filesize('./download/ah141090676723_100.jpg') == '1359') ) { code that retrieves a remote file and writes it to '/ah141090676723_100.jpg'  }

...并获得“filesize(): stat failed for ./download/ah141090676723_100.jpg”错误。

我要解决的问题是远程服务器不稳定,有时会返回垃圾响应(始终为 1359 字节长)。所以,我想检查是否 A)文件不存在(第一次运行),或 B)文件等于垃圾(1359);如果其中任何一个为真,请尝试抓取并写入文件。冲洗并重复,直到我们得到不是垃圾的东西。

代码实际上似乎在工作——文件被检索和写入,我没有通过这个循环得到任何垃圾响应——但这个错误让我感到困惑。我认为可能是在第一次运行时,该文件不存在,因此 filesize 抛出此错误。但是“||” 运营商应该阻止在第一次运行时进行第二次评估......对吗?

我应该提到我正在调用“clearstatcache();” 在循环内部,在检索/写入之后。

任何帮助表示赞赏!

斯科特

4

1 回答 1

1

改成

while ( file_exists('./download/ah141090676723_100.jpg') && filesize('./download/ah141090676723_100.jpg') == 1359) 

file_exists总是需要的。filesize()当文件不存在或不可读时返回“stat failed”。

于 2016-01-12T20:47:45.923 回答