Почему fsockget timeout в этом примере при использовании одинарных кавычек для некоторого текста? - PullRequest
0 голосов
/ 19 октября 2011

Я тестирую форму WebToLead Salesforce, используя этот простой пример http://wiki.developerforce.com/index.php/Simple_Web2Lead_Implementation.

Когда я изменил двойные кавычки (используемые для объединения значений $header) в одинарные кавычки, я продолжаю получать следующую ошибку:

Fatal error: Maximum execution time of 60 seconds exceeded in C:\wamp\www\test.php on line 23

Когда я возвращаю им двойные кавычки, все работает нормально. Чего мне не хватает?

Вот упрощенная версия, которую вы можете использовать, если у вас есть учетная запись разработчика Salesforce:

<?php
//do quality checks on the incoming data here.

//then bundle the request and send it to Salesforce.com
$req  = "&lead_source=". urlencode("test");
$req .= "&first_name=" . urlencode("first name test");

$req .= "&debug=" . urlencode("1");
$req .= "&oid=" . urlencode("<your oid>"); 
$req .= "&retURL=" . "";
$req .= "&debugEmail=" . urlencode("<your email>");

$header  = 'POST /servlet/servlet.WebToLead?encoding=UTF-8 HTTP/1.0\r\n';
$header .= 'Content-Type: application/x-www-form-urlencoded\r\n';
$header .= 'Host: www.salesforce.com\r\n';
$header .= 'Content-Length: ' . strlen($req) . '\r\n\r\n';
$fp = fsockopen ('www.salesforce.com', 80, $errno, $errstr, 30);
if (!$fp) {
echo "No connection made";
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024); // error is thrown here
echo $res;
}
}
fclose($fp);
?>

1 Ответ

2 голосов
/ 19 октября 2011

Ну, '\r\n\r\n' не будет оцениваться в реальных символах, в то время как "\r\n\r\n" будет.

Поскольку они не оцениваются должным образом, заголовок будет сформирован неправильно, что объясняет ваш тайм-аут.

...