我一直有一個非常困難的時間最近在我們的paypal ipn模塊中調試curl函數。調試curl_exec
這裏是我們使用的模塊:http://www.oscommerce.com/community/contributions,2679但是相關的代碼如下。
我遇到約5%的交易出現此錯誤。它會導致訂單不會更新爲付費狀態。
我確定它是curl_exec這是失敗,並停止進一步的腳本正在處理。在cPanel的錯誤日誌中沒有與此相關的錯誤。
我已經嘗試改變curl和php超時持續時間沒有變化。我嘗試過使用try和catch,但那也沒有幫助。
當腳本停止執行時,它碰到curl_exec我不能使用curl_error獲得有關問題的任何反饋。
我已經查看了傳遞給IPN的參數,但它們都很好。
我覺得我已經盡我所能去確定這個問題的原因,並沒有得到任何地方。
如果腳本使用fsock作爲連接的主要方法,則會遇到同樣的問題。
如果有人對調試這個問題的其他方法有什麼建議,我會很感激。
感謝
if (MODULE_PAYMENT_PAYPAL_IPN_GATEWAY_SERVER == 'Live') {
$server = 'www.paypal.com';
} else {
$server = 'www.sandbox.paypal.com';
}
$fsocket = false;
$curl = false;
$result = false;
if (function_exists('curl_exec')) {
$curl = true;
} elseif ((PHP_VERSION >= 4.3) && ($fp = @fsockopen('ssl://' . $server, 443, $errno, $errstr, 30))) {
$fsocket = true;
} elseif ($fp = @fsockopen($server, 80, $errno, $errstr, 30)) {
$fsocket = true;
}
if ($fsocket == true) {
$header = 'POST /cgi-bin/webscr HTTP/1.0' . "\r\n" .
'Host: ' . $server . "\r\n" .
'Content-Type: application/x-www-form-urlencoded' . "\r\n" .
'Content-Length: ' . strlen($parameters) . "\r\n" .
'Connection: close' . "\r\n\r\n";
@fputs($fp, $header . $parameters);
$string = '';
while ([email protected]($fp)) {
$res = @fgets($fp, 1024);
$string .= $res;
if (($res == 'VERIFIED') || ($res == 'INVALID')) {
$result = $res;
break;
}
}
@fclose($fp);
} elseif ($curl == true) {
$ch = @curl_init();
@curl_setopt($ch, CURLOPT_URL, 'https://' . $server . '/cgi-bin/webscr');
@curl_setopt($ch, CURLOPT_POST, true);
@curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
@curl_setopt($ch, CURLOPT_HEADER, false);
@curl_setopt($ch, CURLOPT_TIMEOUT, 30);
@curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = @curl_exec($ch);
curl_close($ch);
}
你可以格式化你的代碼有點plz。 – 2010-07-30 11:05:26
可能重複[curl \ _exec不返回數據](http://stackoverflow.com/questions/8410106/curl-exec-not-returning-data) – kenorb 2015-05-18 19:41:09