Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jeden skrypt, wiele stron
Forum PHP.pl > Forum > PHP
Szunaj85
Chciałem zapytać o taką rzecz. Mam 1 skrypt, który na końcu zapisuje wyniki do pliku txt. Chcę zrobić żeby był wywoływany z kilku podstron przez polecenie.
  1. <?php include"skrypty/skrypt.php"; ?>
Oczywiście można by zrobić ten sam skrypt dla każdej strony oddzielnie edytując jedynie do jakiego pliku miałby zapisywać wynik. Ale po co?
Problemu by nie było gdyby ten skrypt zapisywał wynik do jednego pliku. Ja natomiast chcę zrobić to trochę inaczej. Załużmy, że w tej chwili wywołuje ten skrypt ze podstrony 2:
Wywoływanie skryptu z konkretnej podstrony.
Podstrona 1
Podstrona 2 (wywołuje skrypt przez <?php include("skrypty/skrypt.php"); ?>)
Podstrona 3

Budowa skryptu.
Skrypt w jakiś sposób namierza z której podstrony został wywołany.
-------------------------------------------------------------
Skrypt właściwy wykonuje operacje
-------------------------------------------------------------
Zapis do pliku txt 1
Zapis do pliku txt 2 (zapisuje wynik do pliku txt 2)
Zapis do pliku txt 3

Wyświetla wyniki poprzez echo
Odczyt pliku txt 1
Odczyt pliku txt 2
Odczyt pliku txt 3
Zastanawia mnie jeszcze jedna rzecz. Czy skrypt się nie sypnie jeżeli w jednoczesnym czasie zostanie wywołany z co najmniej dwóch podstron jednocześnie. Może da się temu jakoś zapobiec. Mam nadzieję, że w miarę jasno wytłumaczyłem. tiredsmiley.gif
sniezny_wilk
Nie możesz includować plików pomiędzy serwerami, możesz wywoływać skrypt przez adres z odpowiednimi parametrami tylko na jednym serwerze.
Szunaj85
Źle zrozumiałeś. Operacja ma być wykonywana na jednym serwerze.
Właściwie to ja popełniłem błąd, ale już poprawiłem.
sniezny_wilk
Cytat(Szunaj85 @ 29.05.2008, 12:21:58 ) *
Źle zrozumiałeś. Operacja ma być wykonywana na jednym serwerze.


No to po co napisałeś, że strona odpala skrypt za pomocą

  1. <?php include("skrypty/skrypt.php"); ?>


z tego wynika że będzie includowany przez różne serwery.. mniejsza o to. Co do Twojego pytania o dostęp jednoczesny kilku stron poczytaj w manualu o flock" title="Zobacz w manualu PHP" target="_manual
pest
Zakładając, że obie strony znajdują się na jednym serwerze, to możesz includować plik na wielu stronach. Niby można includować też pliki z zewnętrznych stron, ale ze względów bezpieczeństwa, możliwość taka jest zazwyczaj wyłączona.

W samym skrypcie żeby rozpoznać z jakiej strony został wywołany - możesz się posłużyć się tablicą $_SERVER, tam są elementy takie jak:
  1. <?php
  2. $_SERVER["SERVER_NAME"]
  3. $_SERVER["HTTP_HOST"]
  4. ?>


Cytat(sniezny_wilk @ 29.05.2008, 14:27:39 ) *
z tego wynika że będzie includowany przez różne serwery.. mniejsza o to. Co do Twojego pytania o dostęp jednoczesny kilku stron poczytaj w manualu o [manual\]flock\[/manual\]


Jak dla mnie to nie wynika z tego, że będzie includowany przez różne serwery, ale mniejsza o to. Jeśli skrypt ma być tylko uruchamiany, to nie ma potrzeby go blokować w żaden sposób, bez problemu wykona się 2 i 10 razy w tym samym czasie.

Jeśli chodzi o blokowanie pliku, do którego dane są zapisywane, to jeśli dane do pliku są dodawane na końcu, to plik powinien być otwarty za pomocą fopen('path_to_file', 'a'). Wtedy nie należy się martwić o blokowanie, bo mechanizm php sam sobie z tym radzi (operacja taka jest atomowa i nie szkodzi niczemu)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.