jak uruchomić php, gdy bieżący skrypt zakończy się przy użyciu curl? nie mogę użyć powłoki lub set_time_limit, aby zapętlić skrypt.
EDYTOWAĆ: Chcę móc używać curl do wywoływania tego samego skryptu, ale kiedy używam curl_exec, nie chcę, aby skrypt czekał na zakończenie curl, chcę tylko, aby wywoływał stronę i kontynuował pracę bez czekania na zakończenie curl .
EDYTOWAĆ:
używając tego kodu na początku skryptu
ignore_user_abort(true);
header("Content-Length: 0");
header("Connection: close");
flush();
następnie używając curl, aby skrypt nazywał się sam, działa w systemie Windows, ale w Linuksie nie działa, aka, chcę, żeby curl wywołał stronę i nie czekał na odpowiedź
Dzięki
Odpowiedzi:
3 dla odpowiedzi № 1Chcesz móc uruchomić żądanie CURL bez czekania na niego.
Zwykle zaczynasz nowy wątek, aby uruchomić w nim żądanie CURL, ale PHP nie obsługuje wielowątkowości.
Z popen lub proc_open, możesz uruchomić proces w tle, jeśli możesz go używać. Możesz uruchomić skrypt CLI PHP, aby wykonać żądanie CURL.
Innym pomysłem jest po prostu zapisanie żądania w tabeli DB i przeprowadzenie sondowania skryptu CLI w tabeli co X minut i wykonanie dowolnego oczekującego żądania.
1 dla odpowiedzi nr 2
Znaleziono:
dodając to na początku skryptu:
ignore_user_abort(true);
header("Content-Length: 256");
header("Connection: close");
echo(str_repeat(" ",256));
@ob_flush();
@flush();
@ob_end_flush();
następnie wywołaj ten skrypt 1_s z innego skryptu 2_ poprzezcurl pozwala drugiemu skryptowi 2_script zakończyć proces bez czekania na zakończenie 1_script! . po prostu curl nie chce odczytać nagłówka „połączenie: zamknij” przed otrzymaniem 256 bajtów, więc wysyłamy je spacjami :)