Session verhindert parallele Scriptaufrufe

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

  • Session verhindert parallele Scriptaufrufe

    Hi,

    ich hoffe ihr könnt mir weiterhelfen. Prinzipiell ist es ein AJAX Problem, aber der Einfachheit halber lässt es sich genauso mit Browser Tabs nachstellen.

    Ich hab ein Script, das eine ziemlich lange Laufzeit hat und als erstes aufgerufen wird (generator.php).

    generator.php
    PHP-Code:
    <?php
    session_start
    ();
    sleep(10);
    ?>
    Dann habe ich zwei Scripte, die währenddessen aufgerufen werden können und einen Rückgabewert liefern sollten:

    response1.php
    PHP-Code:
    <?php
    session_start
    ();
    echo 
    "response1";
    ?>
    response2.php
    PHP-Code:
    <?php
    echo "response2";
    ?>
    Wenn ich jetzt generator.php aufrufe, lädt der Browser brav 10 Sekunden lang. Wenn ich während dieser Ladezeit die response1.php aufrufe, gibt die mir aber nichts zurück, sondern lädt erst wenn generator.php fertiggeladen ist.

    Wenn ich aber nicht die response1.php sondern die response2.php aufrufe, während die generator.php läuft, bekomme ich sofort eine Ausgabe. Der einzige Unterschied zwischen den beiden Scripten ist das session_start().

    Woran kann das liegen? Ist das normal?

    (btw: Wenn erst generator.php aufgerufen wird, dann response1.php und dann response2.php kann es sein, dass die response2.php auch erst etwas ausgibt, wenn die vorigen Scripte fertig sind. Das liegt daran, dass im Firefox die Option network.http.max-persistent-connections-per-server nur auf 2 gesetzt ist. Wenn man den Wert auf 3 erhöht, funktioniert es auch so...)

    Ich verwende PHP 5.1.2 mit diesen Werten für Session Handling (falls das relevant ist):

    Session Support enabled
    Registered save handlers files user
    Registered serializer handlers php php_binary wddx

    Directive Local Value Master Value
    session.auto_start Off Off
    session.bug_compat_42 On On
    session.bug_compat_warn On On
    session.cache_expire 180 180
    session.cache_limiter nocache nocache
    session.cookie_domain no value no value
    session.cookie_lifetime 0 0
    session.cookie_path / /
    session.cookie_secure Off Off
    session.entropy_file no value no value
    session.entropy_length 0 0
    session.gc_divisor 100 100
    session.gc_maxlifetime 1440 1440
    session.gc_probability 0 0
    session.hash_bits_per_character 4 4
    session.hash_function 0 0
    session.name PHPSESSID PHPSESSID
    session.referer_check no value no value
    session.save_handler files files
    session.save_path /var/lib/php5 /var/lib/php5
    session.serialize_handler php php
    session.use_cookies On On
    session.use_only_cookies Off Off
    session.use_trans_sid 0 0
    Ich hoffe ihr könnt mir weiterhelfen.

  • #2
    Ok, ich habe nochmal darüber nachgedacht und ich nehme es jetzt einfach mal als gegeben, dass ein paralleler Aufruf der gleichen Session nicht möglich ist. Es sei denn, jemand kann mir plausible Gründe liefern...

    Wenn man sich das mal durch den Kopf gehen lässt, wäre das auch ziemlicher Blödsinn, wenn sich die Sessionvariablen gleichzeitig ändern könnten - das geht irgendwie am Sinn einer Session vorbei.

    Kommentar


    • #3
      session_write_close() ist ein versuch wert ...

      Kommentar


      • #4
        Stimmt eigentlich, danke.

        Werde aber trotzdem eher versuchen, einfach in den parallelen Scripten ohne Session auszukommen, da die in dieser Applikation sowieso möglichst schlank ausgelegt sein sollten.

        Aber wenigsten steht beim Manual Entry von session_write_close() eine ausführliche Beschreibung dieses Phänomens.

        http://de.php.net/session_write_close

        Kommentar

        Lädt...
        X