我使用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. filesize()返回0?
- 2. PHP文件包含問題
- 3. 從包含文件返回數組的配置問題
- 4. 減少包含文件的數量
- 5. PHP包含文件2目錄返回
- 6. php filesize()總是返回相同的值
- 7. array_column從包含數據的數組中返回0結果
- 8. Sequelize包含返回數據
- 9. php插件/包含問題
- 10. Php/MYSQL問題。 mysql_num_rows()返回0
- 11. 從包含文件返回
- 12. 紅帽文件包含問題,PHP/APACHE
- 13. PHP包含大文件 - 內存問題
- 14. HSQL中的數據遷移問題,新數據庫中不包含少量表
- 15. 包含文件中的PHP $ GLOBALS變量問題
- 16. PHP - filesize()返回一個空字符串
- 17. 從包含AJAX函數的JavaScript文件返回數據
- 18. PHP變量:包含文件?
- 19. PHP fopen對包含文件和get_file_contents的文件返回null
- 20. PHP包含問題
- 21. php包含問題
- 22. Php包含問題
- 23. PHP包含問題
- 24. FileSize問題 - 可可
- 25. 問題將JS變量傳遞給PHP包含文件
- 26. '問題' 與SUMIFS返回0
- 27. jquery文件包含問題
- 28. PHP Cookie包含較少數據
- 29. ElasticSearch索引包含少量數據
- 30. 返回包含在PHP中
不是使用'filesize()',你可以打開文件並使用'strlen()'來查看文件中是否有一個或多個字符。 – 2011-03-02 12:18:10