marco: Script darf nur 1 mal gleichzeitig laufen

Moin,

wie stellt man es an, dass ein PHP-Script nicht 2 Mal gleichzeitig laufen darf?
Also angenommen es ist domain.de/test.php
Nun wird das Script aufgerufen, indem domain.de/test.php im Browser geöffnet wird. Es läuft mehrere Minuten lang.
Währenddessen versucht noch jemand, domain.de/test.php aufzurufen.
Bei diesem muss nun die("laeuft bereits"); ein schnelles Ende herbeiführen.
Sobald das Skript fertig ist, soll es wieder aufzurufen sein.

Habt ihr einen guten Tipp wie man das sauber programmiert?
Thx

  1. Hallo,

    beim Aufruf datei erzeugen und am ende löschen
    falls datei schon existiert, dann die();

    mfg, Flo

    --
    sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|
    1. Hi,

      was ist im Falle, dass das Script nicht ordnungsgemäß beendet wird?

      Das würde wohl damit schief laufen.

      1. Hallo,

        register_shitdown_function oder so

        mfg, Flo

        --
        sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|
        1. Mahlzeit,

          register_shitdown_function oder so

          Diese Methode find ich aber scheisse.

          1. Hallo,

            | register_shitdown_function oder so

            Diese Methode find ich aber scheisse.

            Warum?

            mfg, Flo

            --
            sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|
            1. Mahlzeit,

              »» | register_shitdown_function oder so

              ^^^^

              Deshalb ...

              1. Hallo,

                oh :)

                mfg, Flo

                --
                sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|
      2. Hi,

        Das würde wohl damit schief laufen.

        HTTP hat die Eigenschaft, dass jeder Request völlig unabhängig von jedem anderen ist. Wenn Du eine Abhängigkeit wie z.B. "nur einmal zur Zeit" haben möchtest, solltest Du Dir überlegen, ob HTTP das richtige Mittel zum Zweck ist.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hello,

          HTTP hat die Eigenschaft, dass jeder Request völlig unabhängig von jedem anderen ist.

          Und marco hat nun danach gefragt, ob es Möglichkeiten gibt, eine Zustandsorientierung herzustellen...
          Das geht selbstverständlich mit Semaphoren, also irgendwelchen koodinierten Merkern.

          Was die Frage "ob HTTP das richtige Protokoll ist" betrifft:
          Leider ist oft kein anderes Protokoll verfügbar. Also muss man nehmen, was zugelassen ist.

          Liebe Grüße aus Syburg bei Dortmund

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. Hi,

            Was die Frage "ob HTTP das richtige Protokoll ist" betrifft:

            die Frage habe ich nicht gestellt, ich halte sie für irrelevant. Sinnvollerweise wird, falls HTTP eingesetzt wird, dieses Protokoll aber verlassen, wenn etwas gemacht werden soll, das dem Konzept von HTTP widerspricht. Lies: Die Server-Software ist nicht dafür geschaffen, so etwas zu machen, also wird sie allenfalls zum Aufruf verwendet. Die eigentliche Mechanik wird mit geeigneteren Techniken gebaut.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Hello,

              Was die Frage "ob HTTP das richtige Protokoll ist" betrifft:

              die Frage habe ich nicht gestellt, ich halte sie für irrelevant. Sinnvollerweise wird, falls HTTP eingesetzt wird, dieses Protokoll aber verlassen, wenn etwas gemacht werden soll, das dem Konzept von HTTP widerspricht. Lies: Die Server-Software ist nicht dafür geschaffen, so etwas zu machen, also wird sie allenfalls zum Aufruf verwendet. Die eigentliche Mechanik wird mit geeigneteren Techniken gebaut.

              Dass Dinge dazu verwendet werden, wozu sie verwendet werden, das finde ich in den meisten Fällen auch nicht gut. Ich habe in Vertretung der "Rechtschaffenden" allerdings auch schon mal mächtig in die Scheiße gegriffen und musste erkennen, dass man als normaler Bürger deshalb immer anch den Lücken suchen muss.

              Dass die dann durch Publikation leider auch kurzfristig geschlossen werden, ist leider logisch.
              Es werden etliche Agents provocateurs in Umlauf gebracht, um zum Beispiel Nazi-Gegner, Regierungsfreudne, echte Doemokraten zu identifizieren...

              Das Ergebnis ist dann i.d.R. genau gegensätzlich zum durch die Vertrauenssehligen erwarteten.

              Liebe Grüße aus Syburg bei Dortmund

              Tom vom Berg

              --
              Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
      3. echo $begrüßung;

        was ist im Falle, dass das Script nicht ordnungsgemäß beendet wird?
        Das würde wohl damit schief laufen.

        Man kann nachsehen, wann die Datei angelegt wurde und wenn genügend Zeit vergangen ist, sie als nicht existend ansehen.

        echo "$verabschiedung $name";

  2. Hi Marco,

    Nun wird das Script aufgerufen ... es läuft mehrere Minuten lang.

    aus wie vielen Milliarden Zeichen besteht Dein Script denn, wenn es mehrere Minuten dauert, bis es abgearbeitet ist?

    Währenddessen versucht noch jemand, domain.de/test.php aufzurufen.
    Bei diesem muss nun die("laeuft bereits"); ein schnelles Ende herbeiführen.

    Er muß sterben, nur weil er Deine Webseite besucht?

    Habt ihr einen guten Tipp wie man das sauber programmiert?

    Eine Möglichkeit _wäre_, eine .csv-Datei anzulegen, in der der Wert 0 steht. Bei Beginn der Skriptverarbeitung kontrollierst Du, ob der Wert 0 ist, wenn ja, änderst Du ihn auf 1 und nach Beendigung der Skriptverarbeitung wird wieder 0 daraus.

    Wird bei der Abfrage der .csv-date eine 1 ausgelesen, dann wird das Skript nicht verarbeitet.

    Das ganze hat natürlich nur Sinn, wenn Du das Sperren von Dateien beachtest!

    Mit lieben Grüßen aus Wien

    Michi

    --
    Self-Code: ie:{ fl:| br:> va:} ls:# fo:| rl:° n4:# ss:| de:> js:{ ch:? mo:) zu:}
    Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    It is nice to be important - but it is more important to be nice.
    1. Hi,

      »» Nun wird das Script aufgerufen ... es läuft mehrere Minuten lang.
      aus wie vielen Milliarden Zeichen besteht Dein Script denn, wenn es mehrere Minuten dauert, bis es abgearbeitet ist?

      Nach Deiner Logik müßte das folgende Script ja ziemlich schnell abgearbeitet sein:
      <?php while(1); ?>

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.