2011-09-03 101 views
1

我試圖做一個排序許可檢查腳本的,但並不是所有的主機允許curl_exec,我想知道,是否有撥打電話回的任何其他方式?curl_exec()的任何替代方法?

這是我如何與捲曲做到這一點:

curl_setopt($ch, CURLOPT_URL, $url."/my_script.php"); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $info); 
curl_setopt($ch, CURLOPT_TIMEOUT, 30); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_exec($ch); 

回答

2

您可以簡單地使用file_get_contents()與網址:

file_get_contents('http://www.google.com'); 

這可能會被禁用,雖然只是一個簡單的INI選項allow_url_fopen

或者,您也可以使用fsockopen(),這應該是適用於大部分的系統。

隨着fsockopen()你可以打開一個套接字連接到HTTP服務器,然後使用通信標準fwrite()fread()。缺點是您必須自己編寫HTTP請求標頭,而且您還必須解析HTTP響應標頭。如果你看一下fsockopen()在PHP手冊,你可以看到很多例子:http://fr2.php.net/fsockopen

我的建議是使用捲曲爲主要選項,file_get_contents()函數作爲輔助(如果ini_get('allow_url_fopen')返回一個肯定的結果),並實現諸如fsockopen()作爲解決方案倒退。

+0

乾杯!我會看看我是否能夠讓它做我想要的:)。 – MrE

+0

看看這段代碼我寫道:http://pastie.org/2476499它很老了(Finder的日期回到2007年),所以你可能想調整它,例如刪除@和使用其他錯誤報告方式,就像例外情況一樣(2007年,包括我在內的每個人都以不同的方式編寫PHP代碼)。但是,你可能會得到一個想法......寫的HTTP標頭不硬,最終:http://en.wikipedia.org/wiki/HTTP#Example_session – Qualcuno

+1

非常感謝您!讚賞:) – MrE

2

你可以切換curl_multi_exec,但是這可能禁用。

或者,使用HTTP stream wrapper。要配置POST請求,您需要設置您自己的HTTP context

+0

我不知道HTTP流包裝或HTTP上下文什麼,是不是通常可以使用它像一個普通的共享託管服務提供商?感謝您的快速回復! – MrE

+0

@MrE默認情況下啓用,所以必須在必須託管提供商處提供。但是,請記住,出於安全原因禁用curl的偏執主機提供商幾乎肯定會禁用流封裝。 – phihag

+0

非常感謝您的幫助:)! – MrE

相關問題