Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem (chyba) z Open Power Template
Kamil J.
post 9.05.2008, 01:59:30
Post #1





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 29.12.2005
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Witam

Z góry uprzedzam, iż zdecydowałem się napisać o moim problemie na tym forum ( a nie na forum biblioteki OPT ) ponieważ nie jestem do końca pewnien czy dana biblioteka jest przyczyną problemu.

Opisując w skrócie: problem przejawia się tym, że gdy używam biblioteki OPT strona jest wywoływana podwójnie.

A charakteryzując dokładniej: dzieje się tak w firefoxie (w IE nie, narazie innych przeglądarek nie sprawdzałem) oraz (drugi warunek) gdy przechodzę na stronę z innego adresu (bądź odświerzam przez ctrl+f5), co jest powiązane jak się domyślam z buforem przeglądarki. (przy normalnym odświerzeniu strona zostaje wywołana raz)

Aby upewnić się, że problem jest niezależny od mojego frameworka napisałem testowy plik:

  1. <?php
  2.  
  3. class FrameworkException extends Exception{}
  4.  
  5. require "../Core/Classes/File.Class.php";
  6. require "../Core/Libs/opt/opt.class.php";
  7.  
  8. $file = new File('plik.txt');
  9.  
  10. $file->open(FILE::MODE_END_READ_WRITE_CREATE);
  11.  
  12. define('OPT_DIR', "../Core/Libs/opt/");
  13.  
  14. $opt = new optClass();
  15.  
  16. $opt->root = "../Application/Views/Templates/";
  17. $opt->compile = "../Application/Views/Templates_c/";
  18. $opt->plugins = "../Core/Libs/opt/plugins/";
  19. $opt -> httpHeaders(OPT_HTML);
  20.  
  21. $opt->parse('_header.php');
  22.  
  23.  
  24.  
  25. $file->write("Koniec pliku index.php\n\n---------------------------------\n\n");
  26. $file->close();
  27. ?>



W opisanych powyżej warunkach, za jednym przeładowaniem strony wiadomość "Koniec pliku..." loguje się 2 razy.

Po usunięciu kodu klasy OPT, a dokładnie linii wywołującej parser, problem znika i w każdym przypadku dostaje raz zalogowaną wiadomość.

Czy ktoś ma pojęcie co jest źle? A może nic nie jest źle tylko ja nie mam o czymś pojęcia. Każda sugestia będzie mile widziana, bo szukam rozwiązania już od kilkunastu godzin.

Ja w każdym razie nie wiem jak OPT może wpływać na ponowne wywołanie adresu.

Z góry dziękuje za odpowiedź.

[EDIT] Ze smarty zachowuje się tak samo. Więc jaki czynnik z tych szablonów wpływa (w sumie już nie wiem co) server, przeglądarkę?

Ten post edytował Kamil J. 9.05.2008, 03:58:22


--------------------
Workspace: Ubuntu 8.04, PDT.
Go to the top of the page
+Quote Post
sf
post 9.05.2008, 06:04:20
Post #2





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Proponuje dalej posprawdzać. Przede wszystkim użyj samego systemu szablon, bez frameworka. Inny pomysł to daj exit na koniec pliku index.php.


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
Kamil J.
post 10.05.2008, 11:52:31
Post #3





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 29.12.2005
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Hehe, naprawdę już dużo rzeczy i razy sprawdzałem. W sumie już nie mam pomysłu co sprawdzać, liczę, że ktoś mnie naprowadzi. W każdym razie testy jak wyżej napisałem były przeprowadzone bez frameworka (jedyne komponenty z niego użyte to niezależna klasa File której Ex korzysta z FrameworkException). smile.gif

I teraz doszedł jeszcze kolejny czynnik, który pogłubił mnie już zupełnie. Mianowicie mam dwa pliki index.php (takie samo wywołanie Widoku wewnątrz kontrollera) oraz test.php (treść widoczna powyżej)(nie korzysta z frameworka).

I teraz:
w index.php problem występuje przy wywołaniu przez index.php albo index.php/costam...

W test.php problemu nie stwierdziłem gdy path_info jest puste, za to gdy ma choćby jednego slasha test.php/ to już wywołanie następuje dwa razy. Wydaje mi się to bardzo dziwne, ponieważ test.php w ogóle z tej zmiennej nie korzysta (framework owszem).

Dodanie exit(); na końcu pliku nie pomogło. Pomaga za to dodanie exit(); przed parse(). Czyli (ja już nie mówię, że coś nie tak z opt lub smarty) jakiś czynnik z szablonów musi wywierać wpływ na sam już nie wiem co.

Mile widziana będzie każda wskazówka. Już nawet nie interesuje mnie tak bardzo samo rozwiązanie problemu, co przyczyna - w celach edukacyjnych, bo z tego co szukałem w google problem jest w miarę oryginalny.

Z góry dziękuje.


[edit] Nikt nie ma żadnego pomysłu? :/

Ten post edytował Kamil J. 30.07.2008, 13:28:43


--------------------
Workspace: Ubuntu 8.04, PDT.
Go to the top of the page
+Quote Post
sf
post 10.05.2008, 13:47:20
Post #4





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Sprawdź czy problem występuje na jakimś innym serwerze niż Twój ( ustalisz czy to wina serwera czy coś w skrypcie ) . Zobacz także czy nie masz jakiś reguł mod rewrite w .htaccess .


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
Kamil J.
post 30.07.2008, 13:06:05
Post #5





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 29.12.2005
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Przepraszam, że tak późno odnawiam temat, ale tak czasem w życiu się układa.

Wracając do tematu. Zgodnie z podpowiedziami Sf sprawdziłem skrypt na innym serwerze i dzieje się to samo. Problem występuje także przy pustym pliku .htaccess , więc myślę że problem leży po stronie skryptu.

Nie wiem co biblioteki Smarty i OPT powodują (bo gdy usunę wywołanie ich w skrypcie to problemu nie ma), że strona przy powyżej opisanych warunkach wyświetla się dwa razy.

Proszę o jakieś pomysły, ponieważ ja i moi znajomi nie mamy już żadnych, które naprowadziły by nas na przyczynę.

Z góry wielkie dzięki.
Pozdrawiam.


--------------------
Workspace: Ubuntu 8.04, PDT.
Go to the top of the page
+Quote Post
Zyx
post 30.07.2008, 20:31:07
Post #6





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


Bez kodu frameworka, ew. samego używanego w teście pliku, ciężko mi powiedzieć, gdzie może zachodzić problem. Na pierwszy rzut oka wygląda mi na skopane buforowanie wyjścia, tyle że to nie tłumaczy, skąd system logów dwukrotnie wpisuje coś do pliku. Kodu przeładowującego stronę OPT także nie posiada.

Dodam, że OPT jako taki był używany już z rozmaitymi frameworkami i jeszcze nie dostałem podobnego zgłoszenia o błędzie. Tym bardziej Smarty, który jest popularniejszy i dłużej obecny.

Ten post edytował Zyx 30.07.2008, 20:31:24


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
Kamil J.
post 1.08.2008, 09:51:32
Post #7





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 29.12.2005
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Tak jak już pisałem w poprzednich postach - zrobiłem także test bez użycia frameworka. Kod tego pliku można znaleźć w postach powyżej. Jedyne z czego ten skrypt korzysta to klasa ułatwiająca zapisywanie danych do plików i rozszerzenie Exception, którego wymaga ta klasa.

Pozdrawiam.

Cytat(Zyx @ 30.07.2008, 21:31:07 ) *
Dodam, że OPT jako taki był używany już z rozmaitymi frameworkami i jeszcze nie dostałem podobnego zgłoszenia o błędzie. Tym bardziej Smarty, który jest popularniejszy i dłużej obecny.


Tak, jestem tego świadom, dlatego na początku podejrzewałem wszystko tylko nie te systemy szablonów. No, lecz teraz już nic innego mi nie zostało.


--------------------
Workspace: Ubuntu 8.04, PDT.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 09:53