Как остановить скрипт

12
MaHbRk
На сайте с 07.04.2008
Offline
12
#11

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

A
На сайте с 19.01.2007
Offline
23
#12
MaHbRk:
хотяб не скрипт..а описание того ..что он делает...и какие циклы используются...тогда можно будет сказать что то конкретнее

В textarea вставляются запросы, которые добавляются в массив. Затем каждое значение из массива подставляется в цикле и по ним получаются данные, которые добавляются в базу. Вот так в цикле и создаются таблицы (один запрос - одна таблица). Как можно прервать этот процесс на каком-либо запросе? Мне нужно так, чтобы можно было закрыть браузер, затем через время открыть и остановить процесс.

icq: 315-477-761
edogs software
На сайте с 15.12.2005
Offline
775
#13
andreytk:
Мне нужно так, чтобы можно было закрыть браузер, затем через время открыть и остановить процесс.

Два варианта.

1) Запускайте процесс через шелл и php интерпретатор. Например php -f script.php . Тогда позже сможете kill его по номеру. Жестокий способ, т.к. скрипт у Вас часть операций может не завершить.

2) Если речь о запуске из браузера, то тут запомните основу. Если Вы открыли окно браузера - Вы запустили одну копию скрипта. Если Вы ещё раз обратились по этому же адресу - Вы запустили другую копию скрипта.

Однако простейшая реализация остановки несложна.

В основном скрипте раз в секунду допустим, или после окончания критических операций (например завершив группу транзакций), проверяйте наличие какого-нибудь специального файла. Например stop.txt. Если он есть - тут же вызываете die/exit или еще что-нибудь. При запуске основного скрипта этот файл должен удаляться.

И напишите "останавливающий" скрипт, единственная функция которого будет заключаться в создании этого файла - stop.txt. Он создаст файл - основной скрипт при очередной итерации его заметит и остановится.

Если Вам нужно видеть работает ли "основной" скрипт, можете им с некоторой периодичность писать в файл current.txt например текущую дату, что бы по ней можно было посмотреть когда было последнее обновление. Не абсолютный способ конечно, т.к. скрипт и подвиснуть может, но всё же достаточно в большинстве случаев.

Вообще, скрипт при "стандартных" настройках хостинга вечно работать не должен, должен или упираться в timelimit или в закрытие коннекта с браузером. Первое отменяется set_time_limit командой, второй ignore_user_abort.

Если пишите относительно универсальный скрипт для всех хостингов, то неплохо бы еще сделать внутреннее ограничение секунд в 25 работы допустим, т.к. на солидном количестве хостингов есть тайм-лимит на выполнение в 30 секунд и не всегда его можно изменить. Лучше вовремя "умереть" скриптом, чем "быть убитым" по времени самим сервером.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
dkameleon
На сайте с 09.12.2005
Offline
386
#14
andreytk:
В textarea вставляются запросы, которые добавляются в массив. Затем каждое значение из массива подставляется в цикле и по ним получаются данные, которые добавляются в базу. Вот так в цикле и создаются таблицы (один запрос - одна таблица). Как можно прервать этот процесс на каком-либо запросе? Мне нужно так, чтобы можно было закрыть браузер, затем через время открыть и остановить процесс.

создайте подобие триггера. например:

на диске файл, разрешающий запросы.

перед каждым запросом проверяете наличие файла.

остановка выполнения - удалить файл из другого скрипта.

Дизайн интерьера (http://balabukha.com/)
A
На сайте с 19.01.2007
Offline
23
#15

Принцип понял, буду пробовать.

edogs, dkameleon, Большое Вам спасибо, это то, что нужно! Очень помогли!

edogs, Вам отдельное спасибо за развёрнутую информацию!

ciber
На сайте с 04.01.2008
Offline
215
#16

давно так не смеялсо. Вариант с тригером конечно будет работать, но подгрузит сильно дисковую систему. Проще воспользоваться переменной в памяти, благо что таких фенечек достаточно много. Например мемкеш

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий