/ / jak uruchomić php po zakończeniu bieżącego skryptu - php

jak uruchomić php po zakończeniu bieżącego skryptu - php

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 № 1

Chcesz 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 :)