我打电话给以下人员:
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失败./download/ah141090676723_100.jpg”错误。
我试图解决的问题是远程服务器是片状的,有时会返回垃圾响应(总是1359字节长)。所以,我想查看是否A)文件不存在(首先运行),或者B)文件是否等于垃圾(1359);如果其中一个为真,则尝试抓取并写入文件。冲洗并重复,直到我们得到不是垃圾的东西。
代码实际上似乎正在工作 - 文件被检索和编写,我没有任何垃圾响应通过这个循环 - 但错误使我神秘。我认为可能是在第一次运行时,文件不存在,所以filesize会抛出此错误。但是“||”操作员应该防止第一次贯穿的第二次评估......对吗?
我应该提一下,我称之为“clearstatcache();”在检索/写入之后,在循环内部。
任何帮助表示赞赏!
斯科特
答案 0 :(得分:1)
更改为
Object
始终需要while ( file_exists('./download/ah141090676723_100.jpg') && filesize('./download/ah141090676723_100.jpg') == 1359)
。当文件不存在或不可读时,file_exists
返回“stat failed”。