Здравствуйте. Мне нужно чтобы через определённый промежуток времени выполнялось какая то функция, нужно чтобы оно не было привязано ОС, а просто всё делалось через PHP код. Пожалуйста мне это нужно сделать по быстрее.
Я бы пробовал в переменную ($time) записывать текущее время, и через какое нибудь условие (допустим когда минуты равны 10 или 20 или 30 и т.д.), запускал бы функцию. Ну и что бы без обновления страницы, при помощи Ajax jQuery присваивал новые значения времени в переменную. Как то так...
Я это делаю для телеграмм бота, мне нужно чтобы было без AJAX, просто чтоб функция или хотя бы php файл запускался автоматически через определённое время. ПЖ Мне это срочно нужно!
а таким способом можно я читаю это и никак не могу понять как использовать, https://github.com/hutnikau/job-scheduler
Эта библиотека похоже Cron использует. А это значит привязка к ОС будет...А для телеграмма нельзя использовать AJAX?
просто я на виртуальном хостинге, просто не хотелось работать с OS, а можно это встроить как то. --- Добавлено --- даже если взаимодействовать с ОС
просто надо автоматизировать, чтобы например админ каждую неделю не запускал код :/ --- Добавлено --- у меня дедлайн 1 день осталось 4ч до сдачи должен успеть --- Добавлено --- например хотя бы чтоб выполнялось команда в терминале через это можно прикрутить "php run.php" команду, хотябы....
Могу посоветовать с AJAX: Делайте два файла index.php и time.php Содержание index.php: Код (Text): <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> </head> <body> <div id="content"></div> <script> function show() { $.ajax({ url: "time.php", cache: false, success: function(html){ $("#content").html(html); } }); } $(document).ready(function(){ show(); setInterval('show()',1000); }); </script> </body> </html> Содержание time.php: Код (Text): <?php $time = date("s"); if($time%2 == 0) { echo 'Четная цифра'; } else { echo 'Не четная цифра'; } Запускаете index.php и у Вас будут надписи чередоваться, по этому примеру можно реализовать Вашу задачу...
В файле time.php написать условие: Код (Text): $time = date("l"); if($time == Monday) { # Выполнять действие } else { # Не выполнять действие }
ну чего ерунду советовать ... это ни грамма ни планировщик... и не по расписанию. + флаги всякие.... иначе при каждом запуске в понедельник будет что-то выполнятся, а не один раз Это надо отдельный комп - на нем бразуер, запустить, и чтоб через аякс это дергалось..?? да нахера такой костыль.. лучше разобраться за 5 минут с планировщиком, настроить его
@Reken Оригинальный ты чел... AJAX требует браузера, он сам по себе не выполняется Тут или крон, как в результате и было сделано, либо демона писать. Крон - проще
... или подойти к задаче не так абстрактно, а проанализировать зачем нужно это действие. возможно хватит проверки при каждом новом запросе к боту типа Код (Text): если (последний раз это действие выполнялось > 10 минут назад) то { выполнить действие; записать время }
если запроса ждать нельзя, то как ни крути, нужен cron. там написано что это расписание, которое ты помещаешь в крон. но только в кроне будет одна строчка. а вся логика расписания будет в программе. кто знает ларавель, может заметить что это аналог Laravel Schedule. только реализовано как независимый компонент. в общем, либо переосмысление задачи, либо крон.
На виртуальном хостинге кажется тоже бывает доступен cron. Если без cron, то это какие-то жуткие костыли, чтобы заменить cron. Теоретически можно запустить нужный процесс php в бесконечном цикле из командной строки через ssh, чтобы сессия сохранялась при отключении из консоли, надо запустить ее через screen. Система такая: cron.php PHP: <?php $flag = 0; while(true){ sleep(5); print "tik time:" . time() . PHP_EOL; $min = intdiv(time(), 60); //time since unix epoch in min print "mins: $min" . PHP_EOL; if($flag != $min && $min % 2 == 0){ //код запускается каждые 2 минуты, меняешь двойку на нужное число $flag = $min; print "doit" . PHP_EOL; //тут твой вызывающий нужный скрипт код } } --- Добавлено --- Спойлер: вот так это выглядит