Я использую Mailchimp api 1.3 php wrapper. Проблема в том, что сервер, на котором мой клиент размещает сайт, будет кэшировать ответ, он даже не сделает api-вызов. Точный тот же код работает со мной и другими клиентами:Проблема с кэшем PHP при отправке данных с использованием fsockopen
$api = new MCAPI($apiKey);
$doubleOptin = false;
$mergeVar = array(
'FNAME' => '',
'LNAME' => ''
);
$api->listSubscribe($listId, $email, $mergeVar, 'html', $doubleOptin);
print_r($api);
методом listSubscribe() вызывает метод callServer, где я думаю, это проблема:
$payload = "POST " . $this->apiUrl["path"] . "?" . $this->apiUrl["query"] . "&method=" . $method . " HTTP/1.0\r\n";
$payload .= "Host: " . $host . "\r\n";
$payload .= "User-Agent: MCAPI/" . $this->version ."\r\n";
$payload .= "Content-type: application/x-www-form-urlencoded\r\n";
$payload .= "Content-length: " . strlen($post_vars) . "\r\n";
$payload .= "Connection: close \r\n\r\n";
$payload .= $post_vars;
ob_start();
if ($this->secure){
$sock = fsockopen("ssl://".$host, 443, $errno, $errstr, 30);
} else {
$sock = fsockopen($host, 80, $errno, $errstr, 30);
}
if(!$sock) {
$this->errorMessage = "Could not connect (ERR $errno: $errstr)";
$this->errorCode = "-99";
ob_end_clean();
return false;
}
$response = "";
fwrite($sock, $payload);
stream_set_timeout($sock, $this->timeout);
$info = stream_get_meta_data($sock);
while ((!feof($sock)) && (!$info["timed_out"])) {
$response .= fread($sock, $this->chunkSize);
$info = stream_get_meta_data($sock);
}
var_dump($response); exit;
не Кто-нибудь есть какие-либо идеи, почему fsockopen и FWRITE никогда отправляет звонок в Mailchimp? Странно то, что я действительно могу читать $ response, но он всегда один и тот же из кеша.
Это звучит как-то с вашим хостинг-провайдером. Кэширование ответов POST действительно, очень плохое. – TooMuchPete