我使用PHP调用Java命令,然后将其结果转发到名为result.txt的文件中。例如,该文件包含: “结果是:5.0” 但函数filesize()返回0,当我通过'ls -l'命令检查时它也是0.因为我决定将结果打印到屏幕上文件大小!= 0因此没有打印。我怎样才能获得大小?或另一种解决方案?PHP问题:filesize()返回包含少量数据的文件0?
回答
从docs,当您调用filesize
时,PHP会将此结果缓存到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);
在结束我取消链接结果文件,所以我认为它的缓存也被清除。我更喜欢你所建议的file_get_contents()函数。非常感谢 – Silentbang 2011-03-02 12:51:23
你使用哪个函数?
因为exec()可以直接将结果赋值给一个变量,所以也许不需要将输出保存到文件中,如果你只是想用PHP加载。
是的,我使用exec()。我试着按照你的建议:exec(“java st $ str”,$ result)with $ str是参数和结果是array()然后var_dump它但它没有输出任何信息 – Silentbang 2011-03-02 12:38:15
@silentbang,也许这就是你最初的问题。如果$结果没有长度,为什么将它放入一个文件然后读取文件有什么不同? – gnur 2011-03-02 12:43:18
哦不。现在它神奇地工作。谢谢 – Silentbang 2011-03-02 12:50:00
你说:
我使用PHP来调用Java命令,然后向前 到一个名为 的Result.txt文件的结果。
谁写的结果?
1.The JAVA programm?
2.您是否在PHP中捕获输出并将其写入文件。
3.你只是重定向命令行输出?
如果1和3之间的结果写入文件时可能会有延迟,实际上,当您使用PHP读取文件时,如果您不等待执行结束,则可以读取它它甚至被写入结果。
我通过exec()函数使用'>'符号重定向结果。在几小时之后,它的大小仍然保持不变(0) – Silentbang 2011-03-02 12:42:03
您应该尝试捕获PHP中的输出,请参阅http://php.net/manual /en/function.exec.php关于如何做到这一点 – Catalin 2011-03-02 15:37:33
- 1. PHP文件包含问题
- 2. 减少包含文件的数量
- 3. array_column从包含数据的数组中返回0结果
- 4. Sequelize包含返回数据
- 5. 从包含文件返回
- 6. php插件/包含问题
- 7. PHP包含大文件 - 内存问题
- 8. 红帽文件包含问题,PHP/APACHE
- 9. HSQL中的数据迁移问题,新数据库中不包含少量表
- 10. PHP变量:包含文件?
- 11. PHP fopen对包含文件和get_file_contents的文件返回null
- 12. PHP包含问题
- 13. php包含问题
- 14. 问题将JS变量传递给PHP包含文件
- 15. FileSize问题 - 可可
- 16. PHP Cookie包含较少数据
- 17. ElasticSearch索引包含少量数据
- 18. 返回包含在PHP中
- 19. 返回0隐含
- 20. 函数包()返回0
- 21. 返回包含文件的目录
- 22. 包含来自包含文件的文件。引用问题
- 23. PHP的问题包括一个包含文件
- 24. PHP PDO Fetch在包含某些列时返回0结果
- 25. php函数返回0吗?
- 26. 使用jQuery GET加载CSV文件返回标题但不包含数据
- 27. 为什么图像在上传时返回filesize = 0?
- 28. 如果文件夹包含1个元素,则XML文件将返回id = 0
- 29. php返回包含文件的内容到javascript
- 30. 在循环中使用filesize()PHP函数 - 返回相同大小
不是使用'filesize()',你可以打开文件并使用'strlen()'来查看文件中是否有一个或多个字符。 – 2011-03-02 12:18:10