2010-09-27 139 views
3

我正在嘗試讀取大文件可以說在我的系統中使用cron作業的插圖文件或photoshop文件。 文件大小從20 mb到300 MB不等使用php腳本從遠程服務器讀取大文件

我一直在使用一些功能,但它在閱讀時中斷。所以我想有一個新的意見。

金額這些功能

  • 的file_get_contents
  • ReadFile的
  • 捲曲

這是最有效的在

  • 一致性術語(在讀取文件應該不會破裂)
  • 速度
  • 資源使用

如果有兩個以上的cron作業,它影響對所有服務器的性能。

請分享最佳實踐代碼。

在此先感謝

+0

你是不是綁定到HTTP?這對於文件傳輸並不是那麼有效,其他協議可能效率更高,甚至可能在故障時重新啓動(儘管這也可以通過HTTP實現)。 – Wrikken 2010-09-27 17:11:04

回答

3

使用cURL。文件功能已被棄用,以支持cURL打開遠程文件。這不僅是faster,而且更可靠的(你不太可能會遇到超時)。

如果腳本超時或內存不足,則需要增加執行時間和內存限制(max_execution_timememory_limit)。

其他說明:

  • readfile()讀取文件並將其打印到輸出緩衝器;它與file_get_contents()不一樣。
  • 如果你用--with-curlwrappers編譯捲曲,那麼當你做file_get_contents()時,它將使用cURL而不是fopen()函數。

需要引用。

0

如果文件太大,您需要拆分兩個任務。 首先你用wget下載文件,一旦你有你的文件,你用PHP來處理它。 這樣你不太可能會遇到超時問題。

,如果你不知道哪個文件下載,因爲它是從某種PHP變量,你可以寫一個文件所需的文件作爲工作的第一步名

然後將它傳遞給經由--input文件=文件作爲第二步驟的wget

,然後處理它作爲與您的php程序

0

DIRECTIO第三和最後的步驟是低電平延伸繞過OS和直進到硬盤,因此它可能是最有效的。

http://php.net/manual/en/ref.dio.php

注意,由於PHP 5.1.0它不再與PHP捆綁。另外,如果腳本在操作過程中中斷,請檢查max_execution_time和max_memory。

相關問題