fsockopen () ist eine Verbindungsart, bei der eine direkte Verbindung zwischen zwei Servern/Webspaces hergestellt wird.
Grundsätzlich wird dadurch auch Traffic erzeugt, wenn diese Funktion aktiviert ist und genutzt wird.
Je nach Webspaceanbieter kann es deshalb sein, dass diese Funktion
- nicht aktiviert ist
- auf einen bestimmten Wert begrenzt ist
- extra "beantragt" werden muss
Ist diese Funktion nicht aktiviert, gibt es auch keine automatischen Updates.
In diesem Fall sollte man keinesfalls ein Seitensystem benutzen, das sich nicht manuell updaten lässt.
Ist der fsockopen-Wert begrenzt, muss man sehen wie man damit auskommt, um auch wirklich alle Updates zu erhalten.
Grundsätzlich läuft ein Update wie folgt ab:
1) Das System prüft den anderen Server auf Updates
Hierbei wird für jede eingebaute Funktion eine Prüf-Verbindung zum entsprechenden Bereich des anderen Servers hergestellt.
Dieser gibt dann eine Rückmeldung, ob ein Update bereit steht oder auch nicht
2) Das System fordert die einzelnen Updates an
Für die Anforderung/Abruf des Updates wird erneut eine entsprechende Verbindung aufgebaut.
Bei einer begrenzten Anzahl an fsockopen-Verbindungen gibt es ein Problem, wenn die Anzahl der zu prüfenden Funktionen mehr als die Hälfte der zulässigen fsockopen-Verbindungen ausmacht.
Ich benutze im folgenden Beispiel einmal eine Begrenzung von 1.000 fsockopen-Verbindungen am Tag und 600 zu prüfende Funktionen:
ZitatAlles anzeigen
Tag 1)
Das System prüft nach, ob die 600 Funktionen Updates benötigen. 600 Verbindungen werden geöffnet und ein Wert wird zurück gegeben: Alle 600 Funktionen benötigen ein Update - es stehen jedoch nur noch weitere 400 Verbindungen zur Verfügung.
An diesem Tag gibt es also nur noch für 400 Funktionen ein Update.
Tag 2)
Erneut werden alle 600 Funktionen geprüft. Wieder benötigen alle ein Update. Wieder gibt es für 200 Funktionen kein Update
Tag 3)
600 Funktionen werden geprüft. 400 von ihnen haben ihre Updates schon bekommen gehabt, so dass nur noch 200 Funktionen ein Update benötigen.
Im "Optimalfall" hat man also am 3. Tag endlich das nötige Update bekommen, um alles auf dem aktuellen Stand zu haben.
Im schlimmsten Fall gab es aber für jede der 200 Funktionen auch an Tag 1 und Tag 2 ein Update und auch an Tag 3 erscheint ein weiteres Update. In diesem Fall bekommt man also an Tag 3 erst das erste Update von Tag 1. Mit einer erneuten Updateprüfung ist erneut das fsockopen-Volumen verbraucht.
Man hängt also auch weiterhin 2 Tage "der Zeit hinterher".
Man kann dieses "Delay" nie ganz genau berechnen, da man nie im Voraus weiß, ob es nicht für die anderen 400 Funktionen am nächsten Tag erneut Updates geben wird. Mehr als 400 Verbindungen bleiben im Beispiel jedoch nie für Updates übrig. Die anderen 600 werden immer für die Prüfung auf Updates benötigt.
Was kann in einem solchen Fall tun ?
1) Anzahl der Funktionen verringern
Je weniger Funktionen, desto weniger Verbindungen werden für eine Update-Prüfung benötigt.
Die Anzahl der Funktionen darf dabei maximal die Hälfte des fsockopen-Limits betragen.
Benutzt man weitere Funktionen, die fsockopen benötigen, muss man deren Updates genauso berücksichtigen als wenn man sie im System eingebaut hätte.
Viele externe Funktionen öffnen aber mehrmals täglich fsockopen-Verbindungen ! Die Zahl muss man also ganz genau kennen und auch berücksichtigen
2) Sequenzielle Updates durch Aktivierung/Deaktivierung der Update-Server im System
Beim WBB hat man zum Beispiel in der Regel 2 Update-Server zur Verfügung: Den für das Hauptsystem und den für die zusätzlichen Funktionen. Zusätzlich kann man auch weitere Server eintragen.
In diesem Fall kann man die Updateserver wechselnd ein- und abschalten
Beispiel:
ZitatAlles anzeigenTag 1)
Updateserver Hauptsystem einschalten und alle anderen Updateserver deaktivieren.
Das Hauptsystem wird geprüft und bekommt seine Updates. Die Zusatzfunktionen werden nicht geprüft und bekommen auch kein Update.
Wenn alle Systemupdates vorliegen, kann man den Update-Server für das Hauptsystem deaktivieren und den nächsten wieder aktivieren. Bis das fsockopen-Volumen aufgebraucht ist und eine Fehlermeldung erscheint.
Mit der Zeit bekommt man dann Erfahrungswerte, so das man die Server in Zukunft ganz gezielt für die Updates an- und abschalten kann.
Nach dieser Meldung gleich den Updateserver für das Hauptsystem deaktivieren und den nächsten Server aktivieren oder aktiviert lassen
Tag 2)
Der Updateserver des Hauptsystems ist deaktiviert. Heute werden nur die Updates für den nächsten Server geprüft und "gezogen".
Dieses sequenzielle Aktivieren der Updateserver ist nur ein übergangsweiser "Ausweg aus dem Update-Dilemma".
Je mehr Funktionen und Server man im Einsatz hat, desto kritischer wird es jedoch mit der Systemsicherheit:
Das Hauptsystem bekommt nur alle paar Tage Verbindung zum Updateserver.
Gibt es ein sicherheitskritisches Update, bekommt man es zu spät mit.
Es gibt eigentlich folgende Möglichkeiten:
1) Nichts tun und einfach darauf verlassen, dass "schon nichts passieren wird" = "NICHTS ist gut"
2) Das fsockopen-Volumen erhöhen lassen = "alles IST gut"
3) Zu einem Hoster wechseln, der dieses Limit nicht hat = "alles WIRD gut"
4) sequenzielles Aktivieren der Updateserver = "besser als nichts ... schlechter als gut"
Die beste Alternative wäre dann noch:
5) Ein anderes System benutzen, das man auch manuell updaten kann = "alles KANN gut sein" .. wenn man das Update nicht vergisst - aber wenigstens ist man dann nicht mehr von fsockopen() abhängig
Natürlich gibt es noch andere Verbindungsarten, wie man automatische Updates bekommen kann.
Diese passen jedoch nicht in dieses Thema "fsockopen"
----------------------------------------------------
Anmerkung:
Ich habe ganz absichtlich eine "Milchmädchen-Rechnung" aufgemacht, damit es verständlich bleibt/wird.
In manchen Fällen liefert der Updateserver nicht nur eine Update-Info zurück , sondern direkt das Update. In solchen Fällen würde das Limit der Verbindungen natürlich viel später erreicht werden und man könnte auch mehr Funktionen einbauen, die dann ein Update erhalten.
Andererseits prüfen selbst Systeme, die man manuell updaten kann/muss über diese Verbindung auch, ob es neue Versionen gibt.
Im Einzelfall (und je nach Entwicklungsstadium) kommt es also auf das einzelne System an und wie genau die Updateroutinen jeweils programmiert wurden, wie viele Verbindungen im Einzelfall nötig werden.
Das hier war also nur eine "Grundsatz-Erklärung".