Я создаю систему напоминаний, которая может отправлять электронные письма в дату и время, установленные в каждом напоминании.
Я хочу, чтобы была автоматическая функция, которая выполняет этот сценарий отправки электронной почты в фоновом режиме, так что, пока сервер включен, эта функция будет работать без прерывания других процессов.
Редактировать:
Я использую PHP на Windows 10.
Вам нужно установить хрон работа запускать свой код каждый Икс минута / час / день / …
Создайте метод в контроллере и поместите в него свой код. Затем настройте работу cron для запуска в особые моменты.
Если у вас есть cPanel или другие панели управления, это будет легко.
Правка № 1: Для запуска в CLI вы должны запустить index.php с помощью команды php и отправить контроллер и имя действия в качестве параметров. Если у вас есть контроллер с именем пользователь и метод с именем «happy_birthday», тогда вам нужно выполнить эту команду: php index.php users happy_birthday
,
Продолжая ответ Али Фарухди.
Вам нужно использовать авторизацию $ this-> input-> is_cli_request ()
https://ellislab.com/codeigniter/user-guide/general/cli.html
Is_cli_request () гарантирует, что вы запускаете команду с сервера, то есть IE никто не только перешел по этому URL и запустил скрипт.
У большинства хостинговых сервисов есть простой способ сделать это (запустить cron). Сначала вы можете обнаружить пробные версии и ошибки, поскольку ваш сервер разработки, вероятно, будет отличаться от производственного. Так что то, что работает на вашем компьютере для запуска скрипта в терминале / где угодно, не будет таким же, как сервер по понятным причинам.
Так что это просто контроллер, как и любой другой, который ваш сервер в данный момент времени запускает.
Мой выглядит примерно так, установлен внутри крон
php-cli /home/a_subfolder/public_html/another_subfolder/myscript.php
Это работает на сервере Linux, так что часть вопроса о codeigniter выше, как вы запускаете cron в Windows, не знаю
Проверь это.
Какая версия cron для Windows?
Я предполагаю, что вы управляете этим локально только тогда? Судя по windows 10.