2018年4月16日 星期一

php + curl 使用時的提醒事項

最近遇到一些問題,才認真去試CURL的參數差異,作個筆記:

        //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_exec($ch);
        curl_close($ch);
這一段程式碼,是會直接輸出在螢幕上的,所以我的用法是:
php test.php > test.csv
再寫另一個程式來讀這個csv檔作處理。

另外說明一下: curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
這邊如果不加設定的話,以我原先要讀的網頁而言,它會導到一個moved的網頁,告訴我檔案要去哪邊下載 (但事實上我去下載時已經抓不到了,原因可能是它只是一個暫存檔)
加了這個設定之後,檔案就能被curl下載,簡單來說就是curl會去做follow location


=================================================


        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        $result = curl_exec($ch);
        curl_close($ch);
        $fp = explode("\r",$result);
        print_r($fp);

這一段的差異,只多了一個CURLOPT_RETURNTRANSFER的參數,但它會讓資料吐回來curl中,因此我把它放在$result這個變數中,再用explode把它切成陣列,就不需要前述的先產生csv檔,再讀csv這種麻煩的動作了。

官方網頁說明如下:
http://php.net/manual/en/function.curl-setopt.php

CURLOPT_RETURNTRANSFER

TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly. 

沒有留言:

張貼留言