Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wywołanie zewnętrznego skryptu z innego
Forum PHP.pl > Forum > PHP
tosiek
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. ?>
markonix
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.
tosiek
Chodzi o to że skrypt B może wywołac tylk0o serwer i nikt inny. shell exec zablokowane.
cudny
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 ?
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.