Автозапускаемый скрипт

Тема в разделе "Как сделать...", создана пользователем Rigor, 10 ноя 2012.

  1. Rigor

    Rigor

    Регистр.:
    1 июн 2008
    Сообщения:
    202
    Симпатии:
    33
    Как сделать автозапуск скрипта в определенное время. Причем просто засунуть в крон не получится, так как вкл/выкл самого автозапуска и установку времени нужно делать из админки сайты, а не на сервере. Заранее спасибо.
     
  2. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    А при чём тут админка сайта, если это серверная функция? Вижу 2 возможности(я ламер - под фото написано) - если сайт часто посещаемый то при открытии страницы проверять попадает ли текущее время под необходимое и в зависимости от этого запускать/останавливать скрипт. и второе. установить максимальное время выполнение на бесконечно и в бесконечном цикле while вставить проверку на необходимое действие. Не забыв при этом написать в while sleep чтобы сервак не положить:D
     
  3. cruide

    cruide Писатель

    Регистр.:
    25 июл 2012
    Сообщения:
    8
    Симпатии:
    22
    Если нужна точность, то только через крон...
    Правда не запускать напрямую его через php, а стартануть его через wget или lynx... Зависит от того, что на серве... а результат в /dev/null
    Что-то вроде: /usr/bin/lynx -dump Перейти по ссылке > /dev/null
    Но с админки сайта не поуправляешь.

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

    Больше вариантов нет...

    Если не считать за вариант отработку скрипта с стороннего сервера или сайта :)
     
  4. Rigor

    Rigor

    Регистр.:
    1 июн 2008
    Сообщения:
    202
    Симпатии:
    33
    Так в этом и проблема, что по ТЗ настройка автозапуска должна быть в админке.

    Единсвтенное, что я придумал, это все скрипты изначально запускать по крону, раз в час, по умолчанию. А уже в скриптах сделать каокй-то флаг, который скажет продожать выполнение скрипта или прекратить.Тогда можно будет этот флаг редаткировать в админке. Но вопрос - а как это скажется на производительности, если раз в час простукивать по крону около 500 скриптов?
     
  5. cruide

    cruide Писатель

    Регистр.:
    25 июл 2012
    Сообщения:
    8
    Симпатии:
    22
    зависит от сервера
     
  6. drw36

    drw36 Создатель

    Регистр.:
    11 ноя 2012
    Сообщения:
    12
    Симпатии:
    2
    админка находится на сервере. В браузере ты видишь html-, css-, js-результат работы этой админки. Что мешает сделать в админке кнопку (html), по нажатии на которую (в результате выполнения скрипта php) выполняется команда линукс?
    p.s. Словосочетание " так как " в этом месте вообще вырубает мой мозг, и я впадаю в кратковременную каталепсию. Хотя, судя по вышележащему конструктивному диалогу, ощущение, что это я просто не выспался)
     
  7. mdrive

    mdrive Создатель

    Регистр.:
    10 янв 2009
    Сообщения:
    10
    Симпатии:
    6
    Если есть возможность редактировать крон. Можно задать минималный интервал через который будет выполняться php скрипт а уже в скрипте отслеживать и время выполнения и вкл/выкл автозапуска нужной функции.
     
  8. invader

    invader Серый кардинал в отставке :)

    Moderator
    • Супермодератор
    Регистр.:
    3 апр 2006
    Сообщения:
    2.760
    Симпатии:
    5.762
    Настройки в админке. Соответственно настройки хранятся в кеше и/или базе.
    Какие трудности - вынести переменные в любое место и дергать их кроном каждые NNN минут, часов...
     
  9. Rigor

    Rigor

    Регистр.:
    1 июн 2008
    Сообщения:
    202
    Симпатии:
    33
    А каким образом можно редактировать крон с помощью команд линукс в php скрипте? shell_execute? если да, то подскажите синтаксис доабвление новой задачи. И удаление.
    получается в день файл будет запускаться 60*24 раз. Как-то не очень хорошо. Но если предположить такой вариант, как из такого файла запустить скрипт, для которого настройки в БД говорят запустить в данную минуту?
     
  10. LIAL

    LIAL Создатель

    Регистр.:
    8 июн 2008
    Сообщения:
    111
    Симпатии:
    48
    Создайте файл, который будет запускаться системным кроном в заданный вами период (пусть это будет mycron.php и пинается он например каждые 10 минут). Ваш mycron лезет в базу (или еще куда, где вам удобнее хранить настройки) и смотрит какие задачи в какой период времени он должен запустить. Для простоты можно например все задачи в том же mycron прописать, и тупо select...case'ом смотреть согласно настроек что выполнять а что нет.