Сценарий PHP может прервать себя или обнаружить прерывание?

Вы хотите java.text. DecimalFormat.

DecimalFormat df = new DecimalFormat("0.00##");
String result = df.format(34.4959);
10
задан Community 23 May 2017 в 10:26
поделиться

5 ответов

Вы можете использовать register_shutdown_function для регистрации функции, которая будет вызываться в конце выполнения скрипта. Вы можете использовать это, чтобы определить, когда сценарий был остановлен, и выполнить определенный набор действий.

5
ответ дан 3 December 2019 в 19:34
поделиться

exit () / die () остановит php-скрипт.

Чтобы знать, когда остановить скрипт, вам просто нужно использовать microtime в качестве таймера и сохранить как константу (или получить из файла php.ini) максимальное время выполнения.

Вы можете также посмотрите информацию Обработка соединения . Где у нас есть такие вещи, как connection_aborted () и connection_status ()

Но какую проблему вы пытаетесь решить?

8
ответ дан 3 December 2019 в 19:34
поделиться

Чтобы получить обратный вызов в момент завершения работы вашего запроса, используйте register_shutdown_function (myfunction) .

Как и большинство сред POSIX, PHP также поддерживает обработчики сигналов . Вы можете зарегистрировать собственный обработчик для события SIGTERM .

function my_abort_handler( $signo ) {
   echo "Aborted";
}

pcntl_signal( SIGTERM, "my_abort_handler" );
4
ответ дан 3 December 2019 в 19:34
поделиться

Возможно, вы захотите взглянуть на pcntl-alarm , который позволяет сценарию отправлять сигнал самому себе. Также содержит некоторые примеры того, как перехватывать сигналы уничтожения, которые может отправлять ОС. И действительно умереть ().

2
ответ дан 3 December 2019 в 19:34
поделиться

Ну, вы могли бы начать $ start = microtime (true) , который вернет отметку времени. Затем вы можете просто продолжать проверять microtime (true) и вычитать это из своего времени начала, чтобы получить количество секунд с момента выполнения.

Но нет, вы можете ' t «поймать» скрипт как его завершение из-за слишком длинного запроса. Вы можете попробовать сделать что-нибудь в последний момент в обработчике завершения работы, но я не уверен, что PHP это выполнит.

Похоже, раньше была функция, которая делает именно то, что вы хотите, connection_timeout ( ) , но он устарел и был удален. Однако не знаю, есть ли этому какая-нибудь замена.

1
ответ дан 3 December 2019 в 19:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: