2013-10-02 5 views
1

Кажется, скрипты php продолжаются даже после закрытия или остановки страницы.PHP-скрипт продолжается после закрытия/остановки страницы

, например, если мой сценарий управляет /localhost/test.php

после того, как закрыть страницу, иногда она продолжает работать. Я уверен, что перезапуск apache очищает его, но есть ли лучший способ завершить php-скрипт после его запуска.

+0

Вы можете использовать 'die();' или 'exit();' для завершения любой функции –

+0

True. Но я ищу что-то на стороне клиента, чтобы остановить скрипт. – elgato75

+0

Hm ... как насчет ссылки (GET) на функцию с выходом? Все это приходит на ум. –

ответ

2

Вы можете использовать ignore_user_abort, но я думаю, что это применимо только в том случае, если вы используете PHP в качестве сценария командной строки.

При выполнении сценариев из браузера, по моему опыту, я понял, что скрипты работают даже после закрытия браузера. Я не пошел дальше, чтобы проверить, как долго они запускались.

Сценарии, делает огромную обработку, которая может работать много минут, я использовал, чтобы иметь контроль, как показано ниже:

  • переменная флаг считается, который хранится в таблице базы данных.
  • Предоставляется способ установить флаг On или Off (или 1 или 0).
  • Флаг отмечен в скрипте, и скрипт остановлен, если флаг обнаружен как Off (или 0).

Одним из способов рассмотреть флаг находится в петле, как показано ниже:

while(true) 
{ 
    /* Your code here which probably does lot of processing */ 

    if($flag === false) break; // Or exit if you prefer 
} 

Если у вас есть код, который нужно выполнить следующую петлю, можно использовать break.
Если вы хотите резко остановить скрипт, вы можете вместо этого использовать вместо него exit.

+0

ах! Это действительно хорошо. может быть, немного глупый, но, безусловно, решает мою проблему. Благодарю. – elgato75

+0

Нет проблем. У меня есть PHP-скрипты, которые запускаются с точки зрения минут, которые были протестированы из браузера изначально и позже, заданы как задания cron. Для моих целей я нашел, что это лучший способ контролировать такие скрипты. Хорошо, что вы нашли мой ответ полезным. Приветствия ... – Uours

2

проверить это: http://php.net/manual/en/function.ignore-user-abort.php

Устанавливает, должно ли отсоединение клиента вызывать сценарий, который будет прерван.

+0

по умолчанию установлено значение false (user_aborts не игнорируются). и все же он все еще работает. – elgato75

+0

вы должны установить это значение true, а не false. прочитайте, пожалуйста, проклятое руководство. – pregmatch

Смежные вопросы