Ich habe folgende Frage an euch:
Wie kann ich Prüfen, ob PHP-Script aufgeführt wird?
Ich habe ein Script, was eine Datei als Download an den Browser schickt. Dieses Script kann jedoch nur einmal gleichzeitig gestartet werden. Jetzt soll die Seite, die auf das Download-Script verlinkt erkennen, ob es schon ausgeführt wird und eine Meldung anzeigen im Stil (Keine freien Slots).
Bitte keine Lösungen mit einer Platzhalterdatei, bei der geprüft wird, ob sie existiert.
Vielen Dank!
Mit freundlichen Grüßen,
denkenreden
Achso: Es wäre schön, wenn die Lösung auch ohne shell() etc. auskommt. Danke!
Ich meine es so:
Ich habe eine Datei (D1), auf die man als Besucher der Seite zugreift. Auf dieser Seite ist ein Javascript, was den Benutzer nach 3 Sekunden auf eine weitere Datei (D2) weiterleitet. Dieses Script(D2) liest eine Datei aus und sendet diese an den Browser -> kurz: es ist ein Downloadscript. Solange ein Benutzer auf dieses Script(D2) zugreift, kann diese Datei nicht geladen werden (Warte-Cursor).
Nun meine Frage:
->Wie kann ich meinem Script(D1) sagen, dass es überprüfen soll, ob bereits jemand auf die Datei(D2) zugreift und falls das so ist ein echo ausgiebt „Kein freier Slot“?
Dies kannst du mit einer aktuellen Session oder besser gesagt mit einem Request-Token umsetzen.
Der Token ist nur einmalig auszuführen was heisst, dass sobald wer den Download startet, wird überprüft ob bereits ein solchen Token besteht:
Wenn nein - kann der Download gestartet werden und es wird dieser Token (einmalige Session-ID) in der Datenbank gespeichert bis dieser Download wieder beendet wurde. Dannach wird der Eintrag wieder aus der DB entfernt.
Wenn ja - wird ausgegebn das dieser Slot im Moment besetzt ist - beim Downloadstart wird dann wieder ein neuer generiert.
Hi!
Entschuldige bitte, dass die Antwort erst jetzt kommt. Ich habe es leider erst jetzt bemerkt.
Schau dir mal das Singleton-Pattern an.
Dann erzeugst du dir ein Objekt, das immer das selbe ist. Hierin kannst du speichern, wieviele Slots verfügbar sind. Vor dem Ausliefern ist der Wert der Variable z.B. 1,
beim Ausliefern 0 und danach wieder 1. Somit kannst du beliebig viele Slots realisieren, wenn du die Variable zum entsprechenden Zeitpunkt immer um 1 de- bzw. inkrementierst.