Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wywołanie zewnętrznego skryptu z innego
tosiek
post
Post #1





Grupa: Zarejestrowani
Postów: 142
Pomógł: 0
Dołączył: 7.07.2008

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


Chcę zrobić tak żeby jeden skrypt (A) uruchomił inny skrypt ( B ) i nie czekał aż sie skończy jego wykonanie. (ma go pro prostu urchomic jakby ktos wywolal w przegladarce)


Skrypt A uruchamia skrypt B ale nie czeka aż B sie wykona i nie potrzebuje nic z B.

Próbowałem wysłać zapytnaie HEAD ale i tak trzeba czekać na odpowiedź - jakieś pomysły?

Skrypt A:
  1. ini_set('memory_limit', '128M');
  2.  
  3. $opts = array(
  4. 'http' => array(
  5. 'method' => 'HEAD',
  6. 'header'=>'Connection: close'."\r\n",
  7. 'timeout' => 5,
  8. ),
  9. );
  10. $context = stream_context_create($opts);
  11. ini_set('default_socket_timeout', 5);
  12. $file = file_get_contents('http://127.0.0.1/7/index2.php', false, $context);
  13. print_r($http_response_header);


i dowolny skrypt B wynkonuje się 10 sekund to skrypt A sie sypie.
  1. <?php
  2.  
  3. // current time
  4. file_put_contents('aa.txt',date('h:i:s') . "\r\n", FILE_APPEND);
  5.  
  6. // sleep for 10 seconds
  7. sleep(10);
  8.  
  9. // wake up !
  10. file_put_contents('aa.txt',date('h:i:s') . "\r\n", FILE_APPEND);
  11.  
  12. ?>


Ten post edytował tosiek 8.12.2012, 19:41:34
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Może uruchom ten skrypt w małej ramce iframe, nie będzie widoczne te opóźnienie chyba poza faktem "oczekiwania" ale na samą stronę to nie wpływa.
Albo ajax.
Go to the top of the page
+Quote Post
tosiek
post
Post #3





Grupa: Zarejestrowani
Postów: 142
Pomógł: 0
Dołączył: 7.07.2008

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


Chodzi o to że skrypt B może wywołac tylk0o serwer i nikt inny. shell exec zablokowane.
Go to the top of the page
+Quote Post
cudny
post
Post #4





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


Chyba nie ma takiego rozwiązania.
PHP wywoływane jest synchronicznie i musisz poczekać, aż pewien proces się zakończy aby drugi się rozpoczął.
Tylko po co Ci rozwiązanie asynchroniczne dla skryptów PHP ? Bo może znajdzie się inne rozwiązanie... może cron jest w stanie pomóc, jeśli nie potrzebujesz efektu skryptu od razu to może warto jednak coś wywołać co dany okres ?
A jeśli cię to nie zadowala to może warto skorzystać z node.js ?

Ten post edytował cudny 9.12.2012, 00:25:44
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.08.2025 - 05:03