PHP-Bug?

Frank Burian
Hallo, vielleicht find ich mit euch des Rätsels Lösung!

Also, folgendes Skript funktioniert einfach nicht!

Das Problem scheint zu sein, das PHP ein Problem damit hat eine vorhandene und übergebene Session zu nutzen, wenn das Script serverseitig über die Funktionen file_get_contents(), fsockopen oder cUrl aufgerufen wird.
Wird das Script aber identisch (URL und Parameter) über den Client (Browser) aufgerufen, funktioniert das ohne Probleme! Was ist hier los???

Das Problem tritt auf IIS und Apache unter Windows auf! Das Script lädt sich einfach tot und es kommt dann der Server-Timeout!

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:

<?php
    // Session wird gestartet
    session_start();

    error_reporting(E_ALL);

    // Url zu diesem Skript
    $strUrl 'http://localhost/test.php';   

    // Bei Erfolg sollte diese Ausgabe kommen
    if (isset($_GET['get'])) {
        die('<h1>ES GEHT !!!</h1>');
    }
    
    // Das externe Laden dieser Seite starten
    if (isset($_GET['start'])) {
        echo file_get_contents($strUrl.'?get=true&'.session_name().'='.session_id());
    }

    // Der Link zum Test
    echo '<a href="'.$strUrl.'?start=true&'.session_name().'='.session_id().'">Zum Test hier klicken...</a>';
?>


Danke...und ich bete das ich hier endlich das Problem lösen kann!
Hanfling
Rekursion....
Chris Hunter
was willst du eigentlich machen?

riecht schon nach rekursion, aber ich seh es nicht wirklich...
Hanfling
Es ist auch irgendwie ne schlechte Idee zu versuchen auf den Session Kram zuzugreifen, bevor sie überhaupt das erste mal geschlossen wurde. Streich das mit der Rekursion. Wohl einfach nur ein Deadlock dadurch. Augenzwinkern
daHooligan
nee... rekursiv wirds nicht wenn das
code:
1:
2:
3:
4:
5:
if (isset($_GET['get'])) {
        die('<h1>ES GEHT !!!</h1>');
    }

funktionieren sollte...
Chris Hunter
ja seh ich auch so, die einzlnen teile funktionieren auch wenn man sie manuell aufruft. aber trotzdem gibts da irgendwo ne sackgasse...

man sollte mal n paar filewrites einfügen und schaun was dabei rauskommt... oder n edebugger verwenden...

also irgendwie raff ichs grad net...
Hanfling
Ich denke... session wird angelegt -> session file gelockt -> neue Aufgerufen mit der session -> versuch auf session file klappt ned, weil session file noch gelockt ist -> wartet darauf das session file geunlockt wird -> deadlock
@daHooligan:
Ich habe das ja selbst vor deinem Post mit der Rekursion zurückgenommen.