我正在嘗試讀取大文件可以說在我的系統中使用cron作業的插圖文件或photoshop文件。 文件大小從20 mb到300 MB不等使用php腳本從遠程服務器讀取大文件
我一直在使用一些功能,但它在閱讀時中斷。所以我想有一個新的意見。
金額這些功能
- 的file_get_contents
- ReadFile的
- 捲曲
這是最有效的在
- 一致性術語(在讀取文件應該不會破裂)
- 速度
- 資源使用
如果有兩個以上的cron作業,它影響對所有服務器的性能。
請分享最佳實踐代碼。
在此先感謝
我正在嘗試讀取大文件可以說在我的系統中使用cron作業的插圖文件或photoshop文件。 文件大小從20 mb到300 MB不等使用php腳本從遠程服務器讀取大文件
我一直在使用一些功能,但它在閱讀時中斷。所以我想有一個新的意見。
金額這些功能
這是最有效的在
如果有兩個以上的cron作業,它影響對所有服務器的性能。
請分享最佳實踐代碼。
在此先感謝
使用cURL。文件功能已被棄用,以支持cURL打開遠程文件。這不僅是faster,而且更可靠的(你不太可能會遇到超時)。
如果腳本超時或內存不足,則需要增加執行時間和內存限制(max_execution_time
和memory_limit
)。
其他說明:
readfile()
讀取文件並將其打印到輸出緩衝器;它與file_get_contents()
不一樣。--with-curlwrappers
編譯捲曲,那麼當你做file_get_contents()
時,它將使用cURL而不是fopen()
函數。需要引用。
如果文件太大,您需要拆分兩個任務。 首先你用wget下載文件,一旦你有你的文件,你用PHP來處理它。 這樣你不太可能會遇到超時問題。
,如果你不知道哪個文件下載,因爲它是從某種PHP變量,你可以寫一個文件所需的文件作爲工作的第一步名
然後將它傳遞給經由--input文件=文件作爲第二步驟的wget
,然後處理它作爲與您的php程序
DIRECTIO第三和最後的步驟是低電平延伸繞過OS和直進到硬盤,因此它可能是最有效的。
http://php.net/manual/en/ref.dio.php
注意,由於PHP 5.1.0它不再與PHP捆綁。另外,如果腳本在操作過程中中斷,請檢查max_execution_time和max_memory。
你是不是綁定到HTTP?這對於文件傳輸並不是那麼有效,其他協議可能效率更高,甚至可能在故障時重新啓動(儘管這也可以通過HTTP實現)。 – Wrikken 2010-09-27 17:11:04