2011-05-27 67 views
3

我正在使用CURL腳本來基本上重新創建用戶必須在表單上發送的過程。我希望所有的東西都在後臺運行,但是當這個腳本執行時它永遠不會發送。我的CURL腳本有問題

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_POST,1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 
    "&shopId=".$ID."&encodedMessage=".urlencode($encodedMessage)."&signature=".$signature); 
curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_USERAGENT, 
    "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1"); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 

$result = curl_exec($ch); 

它可能沒有執行?

+1

如果curl失敗,exec()調用將返回一個布爾值fase。所以添加一個'if($ result === FALSE){die(curl_error($ ch));在執行調用之後。這會殺死腳本並輸出最後的捲曲錯誤。 – 2011-05-27 15:25:42

+0

顯示一些錯誤 – Ibu 2011-05-28 08:30:14

回答

1

測試過,效果很好。

您是否設置了變量$url對不對?

+0

是的,我已經設置了它。這是執行部分? $ result = curl_exec($ ch); – Mike 2011-05-27 15:17:40

+1

這是執行部分。你應該總是在實時代碼中處理錯誤,所以檢查'$ result === false'還有'curl_geterrno($ ch)'。你可能會在'curl_getinfo($ ch)'中找到有用的信息,比如結果是404還是什麼。一旦你完成了它,你還需要'curl_close($ ch)',以確保你沒有打開太多的套接字。 – 2011-05-27 15:39:54

+0

謝謝尼古拉斯。但如果代碼發送正常,那麼這不是我的問題。聽起來好像接收代碼的程序員遇到了問題。有沒有辦法測試cURL是否在我的服務器上工作? – Mike 2011-05-27 15:44:29

0

curl不是模擬fork的好選擇。

只要您當前的腳本停止,curl請求就會被終止,目標url也可能會停止執行自己的腳本。

您可以使用cron或類似的外部進程來運行curl請求,並且它可以不中斷運行。排隊並行請求也很有幫助。