2011-09-16 551 views
3

在操作文件系統時,使用exec()和PHP函數(如rmdir()unlink()等)之間的最佳方法是什麼?操作文件系統

+0

嗯...... *是*有一個? 「最好」是什麼意思? 「操縱文件系統」是指什麼類型的操作系統? –

+0

在性能方面最好,在「最佳實踐」方面最好......通過「操縱文件系統」我的意思是做移動,複製,刪除文件和文件夾等操作,操作系統可以是Windows或Unix(有一個檢查在執行該命令之前執行)。 – teum

+0

啊,夠公平的,我有點誤讀「之間」:) –

回答

3

的PHP版本孤立會比啓動更快shell /調用一個進程來執行一些操作。它們也可以跨不同的操作系統移植,並且即使在web服務器無法訪問標準shell命令(例如,由於chroot /權限)的情況下也可用。然而,對於特別複雜的操作,然後使用外部命令/過程可能快得多,並且需要顯着更少的編程工作,例如,考慮你將如何實現這個在PHP中:

find /some/path -iname \*.files -exec grep '*.tgz' | \ 
    xargs tar -tvzf | grep targetfile 
+0

好吧,這正是我想聽到的。 – teum

1

使用這些函數的優點是您的程序保持獨立,即它不會依賴於依賴外部和操作系統的實用程序。

4

我建議原生PHP函數,因爲外部命令在許多平臺上可能會有所不同。 (例如linux/win)

2

你爲什麼要用exec?最好的方法是使用本地php函數來操作文件系統。

只有當您需要更復雜的操作時纔可以嘗試執行命令。但在這種情況下,也許一個bash或python腳本可以完成這項工作,並且只使用exec來調用該腳本來完成它。

5

功能類似於命令rmdir()每個操作系統上工作,但如果你做一個exec()命令的命令可能會是兼容只有一個OS