首頁 後端開發 php教程 PHP下载远程文件的3种方法以及性能考虑_PHP教程

PHP下载远程文件的3种方法以及性能考虑_PHP教程

Jul 13, 2016 am 10:37 AM
下載 文件 遠端

今天在做导出Excel的时候,总是要测试导出的Excel文件,频繁的下载和打开,很麻烦

 
就想着写段代码一气呵成  服务端导出Excel==>下载Excel文件到本地==>并打开的操作。
 
这里摘出PHP下载远端文件的方案,以备忘。其中第3种方法考虑到文件过大时的性能问题。
 
 
 
 
 
3种方案:
 
-rw-rw-r-- 1 liuyuan liuyuan 470 Feb 20 18:12 test1_fopen.php
-rw-rw-r-- 1 liuyuan liuyuan 541 Feb 20 18:06 test2_curl.php
-rw-rw-r-- 1 liuyuan liuyuan 547 Feb 20 18:12 test3_curl_better.php
 
 
 
方案1,适用于小文件
 
直接使用fopen()/file_get_contents()获取文件流并用file_put_contents()写入
 
    //an example xls file form baidu wenku
    $url = 'http://bs.baidu.com/wenku4/%2Fe43e6732eba84a316af36c5c67a7c6d6?sign=MBOT:y1jXjmMD4FchJHFHIGN4z:lfZAx1Nrf44aCyD6tJqJ2FhosLY%3D&time=1392893977&response-content-disposition=attachment;%20filename=%22php%BA%AF%CA%FD.xls%22&response-content-type=application%2foctet-stream';
 
    $fp_input = fopen($url, 'r');
    file_put_contents('./test.xls', $fp_input);
 
    exec("libreoffice ./test.xls", $out, $status);
?>
  
 
方案2:通过Curl获取内容
 
 
    //an example xls file form baidu wenku
    $url = 'http://bs.baidu.com/wenku4/%2Fe43e6732eba84a316af36c5c67a7c6d6?sign=MBOT:y1jXjmMD4FchJHFHIGN4z:lfZAx1Nrf44aCyD6tJqJ2FhosLY%3D&time=1392893977&response-content-disposition=attachment;%20filename=%22php%BA%AF%CA%FD.xls%22&response-content-type=application%2foctet-stream';
 
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    file_put_contents('./test.xls', curl_exec($ch));
    curl_close($ch);
 
    exec("libreoffice ./test.xls", $out, $status);
?>
  
 
第1,2种方案存在一个问题,就是在写入本地磁盘之前,文件会被读入内存中,那么当文件很大的时候,可能会超出内存而崩溃
 
即使你的内存设置的足够的大,那这也是不别要的开销
 
解决方法是:直接给CURL一个可写的文件流来让它自己来解决这个问题(通过 CURLOPT_FILE选项),这样就要先创建一个文件指针给它。
 
 
    //an example xls file form baidu wenku
    $url = 'http://bs.baidu.com/wenku4/%2Fe43e6732eba84a316af36c5c67a7c6d6?sign=MBOT:y1jXjmMD4FchJHFHIGN4z:lfZAx1Nrf44aCyD6tJqJ2FhosLY%3D&time=1392893977&response-content-disposition=attachment;%20filename=%22php%BA%AF%CA%FD.xls%22&response-content-type=application%2foctet-stream';
 
    $fp_output = fopen('./test.xls', 'w');
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_FILE, $fp_output);
    curl_exec($ch);
    curl_close($ch);
 
    exec("libreoffice ./test.xls", $out, $status);
?>
  

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/735879.htmlTechArticle今天在做导出Excel的时候,总是要测试导出的Excel文件,频繁的下载和打开,很麻烦 就想着写段代码一气呵成 服务端导出Excel==下载Excel文件...
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

紅果短劇怎麼下載劇集 紅果短劇怎麼下載劇集 Mar 11, 2024 pm 09:16 PM

紅果短劇不僅是觀賞短劇的平台,更是內容豐富的寶庫,其中也包含了小說等精彩內容。對於許多熱愛閱讀的用戶來說,這無疑是一個巨大的驚喜。然而很多用戶們還不太了解究竟該如何在紅果短劇中下載並觀看這些小說內容,在下文中本站小編就將為大家帶來詳細的下載步驟介紹,希望能幫助到各位有需要的小夥伴們。紅果短劇怎麼下載觀看答案:【紅果短劇】-【聽書】-【文章】-【下載】。具體步驟:1、先打開紅果短劇軟體,進入到首頁中後我們點擊頁面上方的【聽書】按鈕;2、然後在小說的頁面中我們可以看到有很多的文章內容,在這

wallpaperengine登入別的號碼後下載別人的桌布怎麼辦 wallpaperengine登入別的號碼後下載別人的桌布怎麼辦 Mar 19, 2024 pm 02:00 PM

當你在自己電腦上登過別人steam帳號之後,剛好這個別人的帳號也有wallpaper軟體,切換回自己帳號之後steam就會自動下載別人帳號訂閱的桌布,使用者可以透過關閉steam雲端同步解決。 wallpaperengine登入別的號碼後下載別人的桌布怎麼辦1、登陸你自己的steam帳號,在設定裡面找到雲端同步,關閉steam雲端同步。 2.登陸你之前登陸的別人的steam帳號,打開wallpaper創意工坊,找到訂閱內容,然後取消全部訂閱。 (以後防止找不到壁紙,可以先收藏再取消訂閱)3、切換回自己的stea

115://開頭的連結怎麼下載?下載方法介紹 115://開頭的連結怎麼下載?下載方法介紹 Mar 14, 2024 am 11:58 AM

  最近有很多用戶都在問小編,115://開頭的連結怎麼下載?想要下載115://開頭的連結需要藉助115瀏覽器,大家下載好115瀏覽器後,再來看看下面小編整理好的下載教學。  115://開頭的鏈接下載方法介紹  1、登入115.com,下載115瀏覽器並安裝。  2、在1​​15瀏覽器網址列輸入:chrome://extensions/,進入擴充中心,搜尋Tampermonkey,安裝對應插件。  3、在115瀏覽器網址列輸入:  油猴腳本:https://greasyfork.org/en/

超級人類(superpeople)遊戲下載安裝方法介紹 超級人類(superpeople)遊戲下載安裝方法介紹 Mar 30, 2024 pm 04:01 PM

超級人類(superpeople)遊戲可以透過steam客戶端下載遊戲,這款遊戲的大小在28G左右,下載到安裝通常需要一個半小時​​,以下為大家帶來具體的下載安裝教學!新的申請全球封閉測試方法1)在Steam商店(steam客戶端下載)搜尋“SUPERPEOPLE”2)點擊“SUPERPEOPLE”商店頁面下方的“請求SUPERPEOPLE封閉測試訪問權限”3)點擊請求訪問權限按鈕後,將在Steam庫中可確認「SUPERPEOPLECBT」遊戲4)在「SUPERPEOPLECBT」中點選安裝按鈕並下

夸克網盤怎麼下載到本地?夸克網盤下載檔案保存回本地的方法 夸克網盤怎麼下載到本地?夸克網盤下載檔案保存回本地的方法 Mar 13, 2024 pm 08:31 PM

  不少的用戶們在使用夸克網盤的時候需要將文件下載下來,可我們想讓他保存在本地,那麼這要怎麼設定?以下就讓本站來為使用者來仔細的介紹一下夸克網盤下載檔案保存回本地的方法吧。  夸克網盤下載檔案儲存回本地的方法  1、開啟夸克,登入帳號進去,點選清單圖示。  2、點選圖示之後,選擇網盤。  3、進去夸克網盤之後,點選我的檔案。  4、進去我的文件之後,選擇要下載的文件,點擊三點圖示。  5、勾選要下載的文件,點選下載就行了。

出現0x80004005錯誤代碼怎麼辦 小編教你0x80004005錯誤代碼解決方法 出現0x80004005錯誤代碼怎麼辦 小編教你0x80004005錯誤代碼解決方法 Mar 21, 2024 pm 09:17 PM

在電腦中刪除或解壓縮資料夾,時有時會彈出提示對話框“錯誤0x80004005:未指定錯誤”,如果遇到這中情況應該怎麼解決呢?提示錯誤碼0x80004005的原因其實很多,但大部分因為病毒導致,我們可以重新註冊dll來解決問題,下面,小編給大夥講解0x80004005錯誤代碼處理經驗。有使用者在使用電腦時出現錯誤代碼0X80004005的提示,0x80004005錯誤主要是由於電腦沒有正確註冊某些動態連結庫文件,或電腦與Internet之間存在不允許的HTTPS連接防火牆所引起。那麼如何

foob​​ar2000怎麼下載? -foobar2000怎麼使用 foob​​ar2000怎麼下載? -foobar2000怎麼使用 Mar 18, 2024 am 10:58 AM

foob​​ar2000是一款能隨時收聽音樂資源的軟體,各種音樂無損音質帶給你,增強版本的音樂播放器,讓你得到更全更舒適的音樂體驗,它的設計理念是將電腦端的高級音頻播放器移植到手機上,提供更便捷高效的音樂播放體驗,介面設計簡潔明了易於使用它採用了極簡的設計風格,沒有過多的裝飾和繁瑣的操作能夠快速上手,同時還支持多種皮膚和主題,根據自己的喜好進行個性化設置,打造專屬的音樂播放器支援多種音訊格式的播放,它還支援音訊增益功能根據自己的聽力情況調整音量大小,避免過大的音量對聽力造成損害。接下來就讓小編為大

夸克網盤的檔案怎麼轉移到百度網盤? 夸克網盤的檔案怎麼轉移到百度網盤? Mar 14, 2024 pm 02:07 PM

  夸克網盤和百度網盤都是現在最常用的儲存文件的網盤軟體,如果想要將夸克網盤內的文件保存到百度網盤,要怎麼操作呢?本期小編整理了夸克網盤電腦端的檔案轉移到百度網盤的教學步驟,一起來看看是怎麼操作吧。  夸克網盤的檔案怎麼存到百度網盤?要將夸克網盤的文件轉移到百度網盤,首先需在夸克網盤下載所需文件,然後在百度網盤用戶端中選擇目標資料夾並開啟。接著,將夸克網盤中下載的檔案拖放到百度網盤用戶端開啟的資料夾中,或使用上傳功能將檔案新增至百度網盤。確保上傳完成後在百度網盤中查看檔案是否已成功轉移。這樣就

See all articles