socked

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

  • socked

    Hallo PHP,ler

    Nachdem ich vergebens in einen anderen großen Forum gefragt habe bin ich über die Suche "php Forum" bei euch gelandet.

    Ich hoffe das Ihr mir weiterhelfen könnt.

    Zu meinen Problem:

    $fp = @fsockopen ($ip, $port, $errno, $errstr, 20);

    führt bei bestimmten Domains zu Laufzeitfehler
    eine Laufzeitbegrenzung bzw. Abruchbedingung führt nicht zum gewünschten Ergebnis.

    Meine Versuch Timeout:

    schleife 10 Domains = $link[1......10]

    echo ("<script language=\"JavaScript\" type=\"text/javascript\">
    aktiv = window.setTimeout('location.href=\"$PHP_SELF?start=$linkstring\";',1500);
    </script>\n"); <-- setzt ein timeout bei 1500

    $fp1 = get_socked($link[$z]); <--- ruft fsocked auf

    echo ("<script language=\"JavaScript\" type=\"text/javascript\">window.clearTimeout(aktiv);</script>\n"); <-- löscht timout


    danach Aufruf der Funktion mit GET $linkstring ( Domains die übrig sind )
    jedoch führt diese Skript auch zu Laufzeitfehler nachdem das gleiche Skript wieder aufgerufen wird.


    Jetzt möchte diese Funktion nutzen:
    aber ich komme einfach nicht weiter

    Mein Versuch:

    Inhalt .bat
    iexplore.exe http://www.domain.de

    exec("test.bat");


    Was muß ich machen damit diese Funktion läuft?
    Mein eng. ist nicht so gut.


    I almost gave up trying to get Windows XP w/ Apache 2 to use either system(), or exec() to run a batch file.

    If the batch file was this...

    echo test > test.txt

    it would work fine, creating test.txt...

    but if the batch file was..

    iexplore.exe "http://www.ibm.com"

    I would get nothing. After hours and hours of messing around with this I figured it must be some type of permission problem. (dugh!)

    Long story a little shorter.. You have to give Apache permission to "interact with the desktop".

    Here's how...

    Start>Run>services.msc
    Right click "Apache...", select properties.
    Click on the "LOG ON" tab
    Check the box "Allow this service to interact with desktop"
    Click OK
    Restart Apache

    Works great!


    HOPE THIS HELPS SOMEONE!
    Too bad I didn't find a post like this before I figured it out myself. (I could have been working on something.)


    Danke

    med

  • #2
    bitte lesen: http://www.php-resource.de/forum/sho...threadid=50454 , besonders den Abschnitt über @

    Kommentar


    • #3
      Re: socked

      Original geschrieben von med
      Was muß ich machen damit diese Funktion läuft?
      Mein eng. ist nicht so gut.
      hmm ... wenn's nicht mal zu so einem bisschen reicht, sollte man sich das mit dem programmieren aber noch mal überlegen ...

      Long story a little shorter.. You have to give Apache permission to "interact with the desktop".

      Here's how...

      Start>Run>services.msc
      Right click "Apache...", select properties.
      Click on the "LOG ON" tab
      Check the box "Allow this service to interact with desktop"
      Click OK
      Restart Apache
      also:
      • apache muss wohl als dienst laufen
      • start -> ausführen -> services.msc
      • eigenschaften des apache-dienstes auswählen
      • registerkarte "log on" (o.ä.)
      • checkbox "Allow this service to interact with desktop" ("diesem dienst erlauben, mit dem desktop zu interagieren" o.ä.) aktivieren
      • mit OK bestätigen *g*
      • apache-dienst neu starten
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Danke!

        leider bringt das auch nicht den Erfolg.

        Meine .bat
        C:\Programme\Internet Explorer\iexplore.exe "http://www.ibm.com"

        <?
        system("test.bat");
        ?>

        Die Ausgabe:

        c:\programme\apache group\apache\htdocs\grab>C:\Programme\Internet Explorer\iexplore.exe "http://www.ibm.com"

        Als Rückgabe möchte ich den Inhalt (Quelltext) der Seite.

        Was mache ich nur falsch ?

        med

        Kommentar


        • #5
          Original geschrieben von med
          Als Rückgabe möchte ich den Inhalt (Quelltext) der Seite.
          wie, bitte, kommst du denn auf die idee, dass dies durch aufruf des internet explorers so ohne weiteres möglich wäre ...?
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Hallo wahsaga

            Ich habe mir dieses Ergebnis vorgestellt.....

            Indem ich die Ausgabe abfange und als Datei abspeichern kann.



            ........................
            echo test > test.txt
            erzeugt eine Datei mit dem Inhalt test

            erzeugt eine Datei
            iexplore.exe "http://www.ibm.com" > inhalt.html
            mit leeren Inhalt
            ........................

            Ich kann natürlich auch total daneben liegen.


            siehe: tr4nc3 at msn dot com


            med

            Kommentar


            • #7
              /EOT für mich, da ich grundsätzlich kein verständnis dafür habe, wenn jemand meint sein problem an zwei verschiedenen orten parallel diskutieren lassen zu müssen.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Hallo,
                wahsaga

                Wenn ich helfen kann poste ich auch in mehr als einem Forum.
                Hier bin ich neu

                Warum bin ich hier ?
                Weil ich das Problem immer noch nicht gelöst bekommen habe.

                Sollte es mir gelingen werde ich den Code natürlich ins Netz stellen.
                um anderen die vor ähnlichen Programm-situationen stehen auch helfen zu können.


                Simone

                Kommentar


                • #9
                  @med, du willst also den HTML-Inhalt der Website haben? Wenn ja ist fopen / fsockopen dein Freund.

                  Kommentar


                  • #10
                    Ok,

                    nach einigen Test möchte ich den Code hier posten:

                    Mein erster Ansatz war ok

                    Das Problem ist ganz einfach:

                    ---------------------
                    print str_repeat(' ',300)."\n\n";
                    ------------------------

                    Die Auslieferung der Daten an den Browser erfolgte nicht unmittelbar mit Skriptaufruf die 256 Bytes Grenze ( Zwischenspeicher ) kann mit Hilfe der Generierung von Leerzeichen umgangen werden.


                    echo ("<script language=\"JavaScript\" type=\"text/javascript\">\n\n
                    aktiv = window.setTimeout('location.href=\"sock.php?start=$linkstring\";',2000);\n\n
                    </script>\n\n");
                    flush();


                    flush() bewirkt die vorzeitige html Ausgabe und somit auch den Timeout welches durch die fsockopen verursacht wird.

                    Die fehlerhafte Domain wird in der $_GET Variable Start nicht mehr übergeben. Die Skriptausführung kann ab der nächsten zu untersuchenden Domain erfolgen.

                    Ich hoffe es hilft jemand der vor den gleichen Problem steht!

                    egal in welchen "Forum" er Hilfe gesucht hat ;o)

                    Simone

                    Kommentar

                    Lädt...
                    X