Möglichkeiten ausrastende Downloadmanager unter Kontrolle zu bringen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Möglichkeiten ausrastende Downloadmanager unter Kontrolle zu bringen

    Hallo,

    Es ist sicher ein verbreitetes Problem, dass Scripte (z.B. mit PHP-Code) aus irgendeinem Grund beim Downloadmanager landen ohne ihm dabei die gewünschte Datei zu liefern. Stattdessen wird ihm eine Fehlermeldung oder sonstiger Kontent geliefert der für den Besucher gedacht ist und der vom Downloadmanager mehrmals pro Sekunden angefragt wird.

    So kommen dann schonmal gut 10 Anfragen/Sekunde/Benutzer auf den Server zu die eine nicht unerhebliche Last erzeugen können.

    Mich interessieren welche Verfahren ihr einsetzt um die durch diese Besucher teilweise nicht unerhebliche Last zu vermeiden.

    Was mir bisher eingefallen ist:

    -lokale mysql (besser noch eine schlankere) Datenbank anlegen und bei jedem Aufruf der Seite einsehen und hochzählen. Ab x Besuchen / Zeiteinheit kann dann der Code escaped und 404 geschickt werden. Entweder der DM hört dann auf oder man hat zumindest nur noch minimalen Ressourcenverbrauch

    Gruß
    Pingu

  • #2
    Re: Möglichkeiten ausrastende Downloadmanager unter Kontrolle zu bringen

    Original geschrieben von pingu12
    Es ist sicher ein verbreitetes Problem, dass Scripte (z.B. mit PHP-Code) aus irgendeinem Grund beim Downloadmanager landen ohne ihm dabei die gewünschte Datei zu liefern. Stattdessen wird ihm eine Fehlermeldung oder sonstiger Kontent geliefert der für den Besucher gedacht ist und der vom Downloadmanager mehrmals pro Sekunden angefragt wird.
    Nein? Oo
    Von solch einem Problem höre ich zum ersten Mal...


    Was mir bisher eingefallen ist:

    -lokale mysql (besser noch eine schlankere) Datenbank anlegen und bei jedem Aufruf der Seite einsehen und hochzählen. Ab x Besuchen / Zeiteinheit kann dann der Code escaped und 404 geschickt werden. Entweder der DM hört dann auf oder man hat zumindest nur noch minimalen Ressourcenverbrauch
    Kann der apache auch alleine: http://www.zdziarski.com/projects/mod_evasive/

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Danke ghostgambler für den Tip mit mod_evasive, leider verwende ich mit 2.2 eine derzeit nicht unterstützte Version von Apache.



      Von solch einem Problem höre ich zum ersten Mal...
      Hast du schonmal Dateiauslieferung per PHP gemacht? Das Problem tritt nur bei besonders dämlichen Downloadmanagern auf. Und bei denen die sich als Downloadmanager ausgeben kann ich es auch verhindern. Nur gibt es welche die sich nicht als Downloadmanager ausgeben und entweder nichts oder IEX-Daten schicken.

      Z.B. wenn man mehrere Streams verbietet, dann macht der Downloadmanager eine Anfrage, erhält die Dateigröße über die Headerdaten und macht dann X weitere Streams auf die jedoch nur noch eine Fehlermeldung ausgeben. Das wäre z.B. ein Szenario wo das oben genannte Problem auftreten kann.

      Kommentar


      • #4
        Weise den Benutzer doch einfach darauf hin, dass Download-Manager nicht unterstützt werden?!


        Wenn kein Evasive, dann doch besser Semaphore/Memcache, aber nicht die Datenbank...

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Weise den Benutzer doch einfach darauf hin, dass Download-Manager nicht unterstützt werden?!
          Das tue ich schon. Funktioniert aber leider nicht. Ich glaube ich könnte das auf Schriftgraf 72 machen und es würden dennoch weiter auftreten. Allein schon wegen Unfähigkeit den Downloadmanager auszuschalten o.Ä.


          PHP-Code:
          Wenn kein Evasivedann doch besser Semaphore/Memcacheaber nicht die Datenbank... 
          Diese Funktionalität war mir noch gar nicht bekannt. Aber beschäftige mich mal damit.


          Mir ist noch eine Möglichkeit eingefallen: Die SessionID per Parameter im Link auf das ausliefernde php-Script übergeben und in der Session hochzählen. Das gefällt mir eigentlich schon ganz gut als Endlösung..

          Kommentar


          • #6
            Auch okay - hast dann halt nur die SID in der URL ggf.
            Aber das solltest du auch von deinem Anwendungsfall abhängig machen.

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar

            Lädt...
            X