PHP问题:filesize()返回0,文件包含少量数据?

我使用PHP调用Java命令,然后将其结果转发到名为result.txt的文件中。 例如,文件包含:“结果是:5.0”,但函数filesize()返回0,当我通过’ls -l’命令检查它也是0.因为我决定在文件大小时将结果打印到屏幕!= 0所以没有打印。 如何获得尺寸? 或其他解决方案?

从文档中 ,当您调用filesize ,PHP会将此结果缓存到stat缓存中。

你有没有尝试清除stat缓存?

 clearstatcache(); 

如果它不起作用,可能的解决方法是打开文件,寻找结束,然后使用ftell

 $fp = fopen($filename, "rb"); fseek($fp, 0, SEEK_END); $size = ftell($fp); fclose($fp); 

如果您实际上计划向用户显示输出,则可以改为读取整个文件然后strlen

 $data = file_get_contents($filename); $size = strlen($data); 

你用哪个function?
因为exec()可以直接将结果赋给变量,所以如果你只想在PHP中加载它,也许不需要将输出保存到文件中。

你说:

我使用PHP调用Java命令,然后将其结果转发到名为result.txt的文件中。

结果是谁写的?

1.JAVA程序?

2.你是用PHP捕获输出并将其写入文件。

3.你只是从命令行重定向输出?

如果1和3在结果写入文件之间可能有延迟,那么实际上,当你在PHP中读取文件时,如果你不等待执行完成,你就会读到它,因为它甚至被写了结果。