# Irgendwas ist mit unserem Socket passiert. Wir brauchen einen neuen:
fclose($this->fp);
Redis::del($this->name.".".$this->socketNumber);
$this->fp=$this->getFreeSocket();
$sent=0;
$string=$out;
continue;
}
if($tmp){
$sent+=$tmp;
$string=substr($string,$tmp);
}else
abort(500,"Fehler beim schreiben.");
if(((microtime(true)-$time)/1000000)>=500)
{
abort(500,"Konnte die Request Daten nicht an: ".$this->name." senden");
}
if($sent>=strlen($out))
break;
}
}
publicfunctionrank(\App\MetaGer$metager)
{
foreach($this->resultsas$result)
{
$result->rank($metager);
}
}
privatefunctiongetFreeSocket()
{
# Je nach Auslastung des Servers ( gleichzeitige Abfragen ), kann es sein, dass wir mehrere Sockets benötigen um die Abfragen ohne Wartezeit beantworten zu können.
# pfsockopen öffnet dabei einen persistenten Socket, der also auch zwischen den verschiedenen php Prozessen geteilt werden kann.
# Wenn der Hostname mit einem bereits erstellten Socket übereinstimmt, wird die Verbindung also aufgegriffen und fortgeführt.
# Allerdings dürfen wir diesen nur verwenden, wenn er nicht bereits von einem anderen Prozess zur Kommunikation verwendet wird.
# Wenn dem so ist, probieren wir den nächsten Socket zu verwenden.
# Dies festzustellen ist komplizierter, als man sich das vorstellt. Folgendes System sollte funktionieren:
# 1. Stelle fest, ob dieser Socket neu erstellt wurde, oder ob ein existierender geöffnet wurde.