Buduję aplikację, która w pewnym momencie zwija zawartość z zewnętrznego adresu URL. Jak dotąd to zawsze kończyło się dość szybko/natychmiastowo. Jednak nie jestem pewien, co by się stało, gdyby serwer zewnętrzny długo nie odpowiadał. Czy PHP czekałoby na wykonanie następującego kodu, dopóki cURL nie zostanie zakończony?PHP: Czy cURL zakończy działanie w tle, czy zablokuje dalsze wykonywanie skryptu?
Nie mogę tego przetestować, ponieważ nie wiem, jak "symulować" wolniejszą odpowiedź. Mam nadzieję, że to pseudo-kod sprawia, że moje pytanie jest jasne:
$ch = curl_init($some_remote_url);
$fp = fopen($some_local_file, 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch); // Let's say this takes 20 seconds until the other server responds
curl_close($ch);
fclose($fp);
redirect($some_other_url); // Will this be executed instantly or only after 20 seconds?
Powodem zastanawiam się o to, że nie chcę, aby moje użytkownikowi patrzeć na stronie „loading” przez 20 sekund w przypadku serwera zdalnego reagował powoli, więc prawdopodobnie musiałbym przenieść cały proces do zadania crona. Użytkownik nie potrzebuje natychmiastowego wyniku curlingu, więc nie ma to dla niego znaczenia po zakończeniu procesu.
+1 ładne pytanie ... zdecydowanie po 20sek – Baba