Het probleem
We hebben 2 servers, waarbij Server A draait op PHP 5.6.34 en Server B op 5.6.33-0+deb8u1.
Ik heb een snippet gemaakt om te kijken of een link een geldige (200/300) response geeft en niet dood is (400+). Het probleem is dat deze op Server A tot zover altijd werkt, maar op Server B deze enkele keren niet goed werkt. In de meeste gevallen zijn beide resultaten gelijk, maar bij 1/2 op de 1000 links geeft Server B een error.
Dat is het geval met de link "http://www.galerie-bonnard.com". Op Server A geeft deze een geldige response, op Server B een foutmelding.
Server A:
string(237) "HTTP/1.1 200 OK Server: nginx Date: Tue, 20 Mar 2018 16:02:44 GMT Content-Type: text/html Content-Length: 3709 Connection: keep-alive Last-Modified: Tue, 20 Feb 2018 02:09:08 GMT ETag: "e7d-5659b4bb6aac6" Accept-Ranges: bytes " array(27) { ["url"]=> string(31) "http://www.galerie-bonnard.com/" ["content_type"]=> string(9) "text/html" ["http_code"]=> int(200) ["header_size"]=> int(237) ["request_size"]=> int(95) ["filetime"]=> int(-1) ["ssl_verify_result"]=> int(0) ["redirect_count"]=> int(0) ["total_time"]=> float(0.12653) ["namelookup_time"]=> float(0.124936) ["connect_time"]=> float(0.125468) ["pretransfer_time"]=> float(0.125586) ["size_upload"]=> float(0) ["size_download"]=> float(0) ["speed_download"]=> float(0) ["speed_upload"]=> float(0) ["download_content_length"]=> float(3709) ["upload_content_length"]=> float(0) ["starttransfer_time"]=> float(0.126475) ["redirect_time"]=> float(0) ["certinfo"]=> array(0) { } ["primary_ip"]=> string(14) "xxx" ["primary_port"]=> int(80) ["local_ip"]=> string(14) "xxx" ["local_port"]=> int(58428) ["redirect_url"]=> string(0) "" ["request_header"]=> string(95) "HEAD / HTTP/1.1 Host: www.galerie-bonnard.com Accept: */* Accept-Encoding: deflate, gzip " } string(0) ""
Server B:
bool(false) array(26) { ["url"]=> string(31) "http://www.galerie-bonnard.com/" ["content_type"]=> NULL ["http_code"]=> int(0) ["header_size"]=> int(0) ["request_size"]=> int(0) ["filetime"]=> int(-1) ["ssl_verify_result"]=> int(0) ["redirect_count"]=> int(0) ["total_time"]=> float(0.004128) ["namelookup_time"]=> float(0) ["connect_time"]=> float(0) ["pretransfer_time"]=> float(0) ["size_upload"]=> float(0) ["size_download"]=> float(0) ["speed_download"]=> float(0) ["speed_upload"]=> float(0) ["download_content_length"]=> float(-1) ["upload_content_length"]=> float(-1) ["starttransfer_time"]=> float(0) ["redirect_time"]=> float(0) ["redirect_url"]=> string(0) "" ["primary_ip"]=> string(0) "" ["certinfo"]=> array(0) { } ["primary_port"]=> int(0) ["local_ip"]=> string(0) "" ["local_port"]=> int(0) } string(47) "Could not resolve host: www.galerie-bonnard.com""
Dus ik heb een derde server aangemaakt (weer een andere host), en die geeft hetzelfde resultaat als Server B. Er moet dus iets in de instellingen zitten van server B, waardoor deze een foutmelding geeft, terwijl Server A een geldige response geeft. (Zover ik weet, mocht de website een firewall gebruiken en Server B expliciet geblokkeerd zijn, dan zou deze een 500 status terug moeten geven, of een timeout).
De PHP snippet:
<?php
$url = "http://www.galerie-bonnard.com";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
var_dump(curl_exec($ch));
var_dump(curl_getinfo($ch));
var_dump(curl_error($ch));
?>
Hebben jullie nog ideeën waar dit aan kan liggen? Ik loop redelijk vast op dit probleem.
Omdat ik vermoed dat dit een servergerelateerd probleem is, heb ik deze onder Techtalk aangemaakt.
Alvast bedankt voor jullie inspanningen/reacties!
Groet,
Frank