Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi ich hätte ne Frage:

ich hab voll das Problem weil meine PHP Anwendung so extrem langsam ist!

Webserver ist ok, und in dem Fall brauch ich keine Datenbank.

Das Problem ist dass ein Scripterst dann ausgeführt wird wenn das andere fertig ist.

Beispiel:

script1.php

<?php

session_start();

$_SESSION['test'] = 'abc';

sleep(7);

echo 'fertig geschlafen';

?>

script2.php

<?php

session_start();

die('hi');

?>

das HI aus Script 2 wird erst ausgegeben solabd der sleep von script 1 fertig ist ... de es sich aber um 2 versch. Dateien handelt sollte das so nicht sein dürfen!!! :(

Kennt jemand das Problem ?

MfG mcmaiers

Geschrieben
Wie hast Du das denn aufgebaut?

Includierst Du Script1 und 2 in einer Datei?

Oder rufst Du Script1 auf und leitest dann auf Script2 weiter?

Weder noch ... ich hab 2 Tabs offen im FireFox .... zuerst drück ich F5 bei script 1 dann F5 bei Script 2 ..... der Code den ich vorher gepostet hab ist der komplette code!

Mehr steht da ned ..kein include und nix ... komisch oder

Geschrieben

Was mir einfällt ist, dass vielleicht die Session-Datei (also die Datei in der die Session Werte gespeichert werden) vom Skript geblockt wird und somit das 2te warten muss, bis das erste die wieder freigibt. Das passiert ja aber nur, weil du das vom selben Browser aus tust.

Mach den Test mal mit 2 verschiedenen Browsern (die sich nicht die Cookies teilen). Dann sollten beide eine neue Session starten und somit 2 Dateien benutzt werden.

Also wirklich vorstellen kann ich mir das ja nicht, aber das wäre jetzt die einzige Erklärung, die mir einfällt für so ein verhalten. Wenn php als Modul läuft, laufen ja mehrere Threads. Für jeden Aufruf einer. Als cgi werden eben mehrere Prozesse gestartet. Das sollte alles kein Problem sein. Außer du hast da bei deinem Webserver irgendwelche Einstellungen verkehrt oder der Rechner ansich ist sonst ziemlich ausgelastet.

Geschrieben

Was passiert denn, wenn Du Script 1 im Firefox, und Script 2 gleichzeitig im Internet-Explorer öffnest?

Ich meine mich erinnern zu können, dass ich gleiches Problem damals auch hatte, da scheinbar pro Firefox-Session und Seitenaufruf nur eine Verbindung zum gleichen Webserver geöffnet und verwendet wurde...

Geschrieben

also dass was passiert, wenn es im gleichen browser gleichzeitig ausgeführt wird ist normal...

script1.php

<?php

session_start();

$_SESSION['test'] = 'abc';

sleep(7);

echo 'fertig geschlafen';

?>

script2.php

<?php

session_start();

die('hi');

?>

du arbeitest hier mit sessions...eine session wird nicht pro geöffnete datei oder sonst etwas gespeichert, sondern allgemein vom browser...das heißt wenn du eine seite öffnest und dann eine andere, ist die session immer noch vorhanden. eine session wird erst gelöscht, wenn du alle browser einmal geschlossen hast (einmal garkeinen browser offen haben)

dass das untere script erst arbeitet, wenn die erste datei fertig ist, ist auch normal, weil du deinen session schreibzugriff in der ersten datei nicht beendest...somit wird die session über die komplette laufzeit bearbeitet und kann von der anderen nicht bearbeitet werden.

allerdings ist mir noch unklar, was du eigentlich bezwecken willst...

wenn du in der zweiten datei auf den inhalt der ersten verzichten kannst, kannst du ja auch ein session_destroy() benutzen...aber ich denke mal das liegt nicht in deinem interesse.

Geschrieben

du arbeitest hier mit sessions...eine session wird nicht pro geöffnete datei oder sonst etwas gespeichert, sondern allgemein vom browser...das heißt wenn du eine seite öffnest und dann eine andere, ist die session immer noch vorhanden. eine session wird erst gelöscht, wenn du alle browser einmal geschlossen hast (einmal garkeinen browser offen haben)

Eine Session wird nicht allgemein einfach vom Browser gespeichert. Eine php-Session speichert gewisse Daten auf dem Server. Und diese Daten werden (default, kann auch geändert werden in z.B. DB. session.save_handler) in einer Textdatei im Session_Save_Path (php.ini) gespeichert. Eine Session wird über eine Session ID identifiziert. Diese Session ID wird (auch default) in einem Cookie gespeichert und somit danach immer wieder mit an den Server gesendet. Dort wird diese dann in einer evtl. aufgerufenen session_start funktion genutzt um wieder auf dieselben Daten zugreifen zu können. Die Sesson ID kann auch in der URL mit übergeben werden und funktioniert dann genauso.

Sessions werden nicht gelöscht, wenn einer oder alle Browser geschlossen werden. Einzig der Session Cookie hat standardmäßig eine Lebenszeit von 0 (d.H. bis der Browser geschlossen wird). Die Einstellung session.gc_maxlifetime legt fest, ab wann eine Session auf dem Server als "Müll" eingestuft wird. Standard sind hier 1440 Sekunden (nach dem letzten Zugriff). Nach Ablauf dieser Zeit wird eine Session aber nicht automatisch einfach gelöscht. Sie wird wie gesagt dann als Müll angesehen. Beim Start einer Session (session_start) besteht die Möglichkeit, dass der Garbage Collector aktiviert wird. Dieser entsorgt dann den Müll. Diese Wahrscheinlichkeit kann auch in der php.ini eingestellt werden und ist standardmäßig 1/100 (also wird theoretisch bei jedem 100ten Start eine Bereinigung durchgeführt).

Session IDs kann man stehlen (aus Cookies, oder wenn die in der URL eingebettet sind) oder als Bookmark mitspeichern o.ä. Damit ist es auch lange nachdem der Browser geschlossen ist noch möglich, eine Session wieder aufzunehmen (sich z.B. irgendwo als ein anderer Benutzer einzuloggen o.ä.).

Nur mal zur Info...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...