автоматически планировать выполнение скрипта php в определенное время

Я разрабатываю веб-приложение, которое требует событий. Пользователь создает событие в определенное время, и мне нужно, чтобы скрипт выполнялся и активировал событие в точное время, чтобы событие могло начаться. Любые идеи о том, как я могу это сделать? Я googled и искал через переполнение стека, но все, с чем я столкнулся, было многократным исполнением в определенное время. То, что мне нужно, – это выполнение при автоматическом установлении времени. Надеюсь, ты поможешь мне, я в отчаянии.

У вас есть 3 варианта. Моя рекомендация: используйте cron, если можете, пользователь, если вам нужно, и демон в крайнем случае.

(1) cron (как указано в комментариях)

cron – это планировщик для Linux-систем, который будет запускать задание командной строки в вашей системе. Вы заходите на свой сервер через ssh, введите crontab -e и добавьте следующую строку:

 4 5 * * * php /path/to/my/script.php 

Это будет запускать скрипт в 5:04 утра каждый день.

 <?php // /path/to/my/script.php // Do something 

Некоторые услуги хостинга позволяют вводить задания cron с помощью графического интерфейса. Существуют также внешние службы cron, которые будут вызывать URL-адрес для вас в определенное время.

(2) демон

Это самый продвинутый вариант, а также наименее надежный: вы запускаете сценарий командной строки, который содержит бесконечный цикл. Затем скрипт проверяет состояние и отвечает на него. Поскольку это может привести к сбою после нескольких месяцев работы, у вас должен быть второй скрипт для его перезапуска в случае его возникновения. Это очень много работы, но это самый гибкий подход.

 <?php while (1) { // fetch $last_exec_timestamp from database if ($last_exec_timestamp < time() + 86400) { // set last_exec_timestamp to now in database // do something } sleep(5); 

}

3. Пользовательский

Если у вас есть приличный объем трафика на вашем сайте, вы можете просто включить задание в нижний колонтитул страницы, когда больше нет вывода. Убедитесь, что этот код работает быстро, или неудачный пользователь будет его ждать.

 <?php // fetch $last_exec_timestamp from database if ($last_exec_timestamp < time() + 86400) { // set last_exec_timestamp to now in database // do something } 

Также есть более привлекательные подходы к «управляемым пользователем», которые я лично не тестировал в другом вопросе переполнения стека .

Что вы ищете, так это CRON JOBS

http://net.tutsplus.com/tutorials/php/managing-cron-jobs-with-php-2/