[Cronjob] Wie würdet ihr das machen?

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

  • [Cronjob] Wie würdet ihr das machen?

    Hallo,

    ich zerbreche mir gerade den Kopf wie ich folgendes Problem am effektivsten lösen könnte. Für mein neues Projekt (siehe Userpages) will ich ein Cronjob anschieben, der regelmäßig alle Proxys in der Liste auf Ihre Verwendbarkeit prüft, so das die Liste immer funktionierende Proxys beinhaltet.

    Jetzt ist die Liste noch nicht so groß, was sich später aber ändern wird.
    Mein Problem ist jetzt, wie ich den Cronjob aufbaue! Denn wenn mal mehrere hundert Proxys in der Liste sind, ist es doch bestimmt nicht sehr effektiv soviele Proxys über einen einzigen Skriptaufruf zu testen. das skript würde ja dann stunden, wenn nicht tage laufen, eh es durch ist. wie würdet ihr das machen?

    mein gedanke bis jetzt ist, das ich in der db flag setze, der ein proxy als gerade ungetestet oder getestet markiert. und dann pro cronjobaufruf nur eine bestimmte anzahl an proxys testen lasse. allerdings will ich das jeder proxy stündlich geprüft wird und das wäre bei dieser variante dann nicht machbar.

    hat jemand eine idee, wie ich das am effektivsten lösen könnte?
    danke

  • #2
    wie lange wartest du max. bis der Proxy antwortet? Ich würde eine datetime-Spalte nehmen, und

    - bei Start der Überprüfung: select ... where <differenz Zeitspalte und jetzt > 1 Stunde>
    - nach der Überprüfung: update ... set zeitspalte=now where id = ...

    Es ist natürlich davon abhängig, wie lange du die Zeit für die Überprüfung reserviert hälst, ob innerhalb einer Stunde alle Daten überprüft werden kann, das musst du selbst herausfinden und ggf. anpassen

    Kommentar


    • #3
      Timeout will ich bei 10 Sekunden halten.

      so eine datetime-spalte hab ich. will ja dem user auch zeigen, wann der proxys das letzte mal getestet wurde.

      So hab ich mir das auch gedacht, allerdings geht das auch nur wenn das prüfen aller nicht länger als eine stunde dauert. wenn es doch mal länger dauert, würde es dann nicht mehr genau hinhauen. mhh...

      Kommentar


      • #4
        Hallo,

        vielleicht solltest du eine Art von Qualitätsservice "QoS" einbauen. Sprich du überprüfst alle neuen Proxy's und alle "gut bewerteten" Proxys. Sollte ein Proxy öfters nicht rechtzeitig anworten fliegt er aus deinem Muster und wird als "schlecht" bewertet.

        OffTopic:
        gibt es eine exportfunktion der ganzen proxytabellen bzw. eine xml-seite?
        tutorial: peterkropff.de schattenbaum.de tut.php-quake.net
        documentation: php.net mysql.com framework.zend.com

        Die Nachtwache!

        Kommentar


        • #5
          Re: [Cronjob] Wie würdet ihr das machen?

          Original geschrieben von frankburian
          Jetzt ist die Liste noch nicht so groß, was sich später aber ändern wird.
          Mein Problem ist jetzt, wie ich den Cronjob aufbaue! Denn wenn mal mehrere hundert Proxys in der Liste sind, ist es doch bestimmt nicht sehr effektiv soviele Proxys über einen einzigen Skriptaufruf zu testen. das skript würde ja dann stunden, wenn nicht tage laufen, eh es durch ist.
          100 => Stunden bis Tage, 1000 => halbe Woche? Das muß besser skalieren!
          Du hast ja schon die IP, das spart teure DNS-Queries.

          Sei p die Anzahl Prozesse, n die Anzahl der Netzwerkverbindungen pro Prozess, die dein OS zuläßt und c die Anzahl Proxies in der DB.
          Dann starte p identische Prozesse P1,...,Pp.
          Jeder Pi testet in einer Schleife parallel max. n Proxies von c mod i bis c mod i+1.
          Natürlich gehts nicht genau so, weil das dein System bis an die Grenzen belasten würden. Aber das Prinzip dürfte klar sein.

          Kommentar


          • #6
            @Bugbuster

            naja, es gibt ja die prozentuale Verfügbarkeit in der Liste. Die ergibt sich aus allen prüfungen, und deren fehlschläge. bei unter 50% fliegt der Proxy dann eh aus dem Datenbestand.

            eine exportfunktion hatte ich nicht vor bereitzustellen, warum?

            @onemorenerd

            ja, ist klar.

            mal sehen wie ich das nun mache!

            Kommentar


            • #7
              um eine blacklist bzw. whitelist zu erstellen.

              mfg
              bugbuster
              tutorial: peterkropff.de schattenbaum.de tut.php-quake.net
              documentation: php.net mysql.com framework.zend.com

              Die Nachtwache!

              Kommentar


              • #8
                black und whitelist für was?

                Kommentar


                • #9
                  um spammer bei portalseiten auszuschließen. multiaccounts und so geschichten.
                  tutorial: peterkropff.de schattenbaum.de tut.php-quake.net
                  documentation: php.net mysql.com framework.zend.com

                  Die Nachtwache!

                  Kommentar

                  Lädt...
                  X