Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Otworzenie strony w "tle"
Heniut
post 9.12.2011, 10:30:08
Post #1





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 22.07.2011

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


Cześć.
Czy można zrobić coś takiego, że kod się wykonuje i w pewnym momencie tylko otwiera stronę (tak, aby user nie jej nie widział [coś jak iframe o wymiarach 1x1] widział - strona jest pusta, a nie żaden keygen itp.) czeka aż się załaduje, zamyka tą stronę "w tle" i dalej wykonuje kod. Czy coś takiego jest możliwe?
Go to the top of the page
+Quote Post
Uriziel01
post 9.12.2011, 10:37:09
Post #2





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

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


Jest możliwe nawet kilka różnych sposobów. Ta otwarta strona ma oczekiwać aż wszystkie elementy ze strony głównej zostaną załadowane ? Nawet prosty IFrame z stylem "display:none;" wstarczy. Ale to nie ma prawdopodobnie sensu gdyż jeżeli dobrze rozumiem tobie zależy na samym kodzie .js w tym nowym oknie nie na jego treści ? Dołącz w takim razie jakiś plik .js który będzie reagował na akcje
  1. var pageisloaded=0;
  2. window.addEvent('load',function(){
  3. pageisloaded=1;
  4. });

albo, jeżeli używasz JQuery na akcję:
  1. .ready(function() {


Ten post edytował Uriziel01 9.12.2011, 10:37:57
Go to the top of the page
+Quote Post
Heniut
post 9.12.2011, 10:41:19
Post #3





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 22.07.2011

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


Mam swój kod i w trakcie wykonywania funkcji muszę wejść na pewną stronę na innym serwerze (tak chodzi o kod, a nie "zawartość tej strony"), a potem kod sie musi dalej wykonywać. A może pobierając stronę przez curl tak jakby ją "odwiedzam" ?
Go to the top of the page
+Quote Post
Uriziel01
post 9.12.2011, 10:55:05
Post #4





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

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


To wszystko zależy od tego co robi ten rzeczony kod na stronie która chcesz wczytać, po wczytaniu tego curlem mogą się nie wykonać pewne akcje JS. Z reszta same wejście nic nie znaczy, JS nie wykona sie przy samym CURLu, musiałbyc go wyrzucić do zawartości aktualnej strony, a to znów zalezy od tego co ten kod zawiera.

Ten post edytował Uriziel01 9.12.2011, 10:56:20
Go to the top of the page
+Quote Post
Wykrywacz
post 9.12.2011, 11:18:01
Post #5





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


Jak kod to dla czego nie użyjesz XMLHttpRequest ? zresztą niezależnie czy kod czy nie wink.gif
Go to the top of the page
+Quote Post
by_ikar
post 9.12.2011, 11:34:01
Post #6





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Tworzysz sobie jakiś skrypt w php, wrzucasz go powiedzmy w head strony jako plik js:

  1. <script type="text/javascript" src="/sciezka/do/skryptu/skrypt.php"></script>


A w samym pliku, na samym jego początku dodajesz pewien nagłówek:

  1. header("HTTP/1.0 204 No Content");


Informując przeglądarkę, żeby zerwała połączenie ze skryptem. A sam skrypt wykonywać się będzie dalej.

Co zyskujesz:

+ możliwość odpalenia dowolnie długiego skryptu, który może się dość długo wykonywać
+ jednocześnie, dzięki zerwaniu połączenia, nie wydłużasz czasu ładowania twojej strony
+ w pliku php który będzie symulować JS, możesz dołożyć jakiś skrypt js, który będzie po jakimś czasie braku aktywności użytkownika, sam próbował jeszcze raz się załadować
- dodatkowe rzadanie, które minimalnie spowolni proces ładowania strony
- jak jakoś tego nie zabezpieczysz w jakiś sposób, możesz więcej razy niż byś chciał odpalić skrypt który będzie działać w tle. Powiedzmy 20 użytkowników wejdzie w tym samym czasie na stronę i skrypt odpali się 20 razy. Jeżeli będzie dość ciężki, możesz sobie nieźle zapchać serwer.

Taki pseudo cron, można by powiedzieć.
Go to the top of the page
+Quote Post
Heniut
post 9.12.2011, 20:01:54
Post #7





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 22.07.2011

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


  1. //Wcześniejszy kod
  2. $ch = curl_init('http://localhost/bot.php');
  3. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  4. curl_exec($ch);
  5. curl_close($ch);
  6. //Dalszy kod

Dlaczego poprawnie się wykonuje (kod, strona, kod), ale to co jest w bot.php "nie ma miejsca" (zapisanie czegoś do pliku) ?

@EDIT
OK, już działa < to była wina lagów snitch.gif Można zamknąć temat

Ten post edytował Heniut 9.12.2011, 20:09:28
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: 19.06.2025 - 21:59