Предполагая, что это вызывается ajax, вы можете добавить обработчик событий, когда пользователь покидает веб-страницу, которая отправляет запрос ajax, который обрабатывается сценарием, который убивает другой сценарий.
Это может быть реализовано, если скрипт при запуске создаст файл. Затем каждый раз он проверяет, есть ли этот файл еще там. Если это так, то оно продолжается, если нет, то оно выходит.
Хитрость заключается в поиске имени файла. Я делаю это, давая каждой странице запрос уникальный идентификатор пользователя. И сценарий 'worker', и сценарий 'kill' вызываются с одним и тем же идентификатором пользователя в URL (GET).