2012年6月23日 星期六

用 curl 別用 file_get_contents

我知道一直以來都是用 php 的 curl 來抓東西,也沒探究為什麼。
因為程式是內部抓資料用的,不會被攻擊還是幹嘛的,所以寫程式還是以快為主。
抓網頁我就直接用 file_get_contents($url) ,省得寫很多行的 curl
這邊不建議這麼做,因為...



  • Yahoo 內部好像也不能用 file_get_contents 來抓資料,是安全性問題。一些 php 的 paas 也是。
  • stack overflow 也有說 file_get_contents 的效率很差。
  • 我自己的經驗是抓網頁常常會卡很久,失敗,還會造成 vm 當掉。改成 curl 語法,就天下太平了。


所以原本是
                       $html = file_get_contents($url);
就多花一點點時間寫成這樣

                        $ch = curl_init();
                        curl_setopt($ch, CURLOPT_URL, $url);
                        curl_setopt($ch, CURLOPT_HEADER, 0);
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                        $html = curl_exec($ch);
                        curl_close($ch);