我正在调用以下内容:
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' }
。并收到"文件大小():统计失败的./下载/ah141090676723_100.jpg"错误。
我试图解决的问题是远程服务器是片状的,有时会返回垃圾响应(长度始终为 1359 字节)。 所以,我想检查一下 A) 文件是否不存在(第一次运行),或者 B) 文件等于垃圾 (1359);如果任一为 true,请尝试抓取并写入文件。 冲洗并重复,直到我们得到不是垃圾的东西。
代码实际上似乎正在工作 - 文件被检索和写入,我没有任何垃圾响应通过这个循环 - 但错误让我感到困惑。 我认为可能是在第一次运行时,该文件不存在,因此文件大小会引发此错误。 但是"||"运算符应该阻止第一次运行时的第二次评估......右?
我应该提到,在检索/写入之后,我在循环中调用了"clearstatcache();"。
任何帮助表示赞赏!
斯科特
更改为
while ( file_exists('./download/ah141090676723_100.jpg') && filesize('./download/ah141090676723_100.jpg') == 1359)
因为file_exists
总是需要的。 filesize()
在文件不存在或不可读时返回"stat failed"。