Выполнять цикл PHP каждые X секунд

У меня есть тип пользователя в том, как часто они хотят, чтобы сообщение отправлялось, как определено переменной $ time

Это код цикла у меня сейчас

$time = $_POST["time"];

for ($x = 0; $x < $amount; $x++) {
mail($completenum, $subject, $message, $headers);
sleep($time);

}

Проблема с этим кодом в том, что сообщения никогда не передаются, я полагаю, это потому, что функция сна останавливает сценарий. Есть идеи?

0

Решение

PHP не совсем правильный язык для этого, вы хотите попробовать javascript или подобный.

PHP разработан, чтобы позволить вам динамически создавать страницу, когда она загружена. Устанавливая режим сна, вы откладываете время загрузки страницы, и сервер и / или браузер в конечном итоге будут использовать тайм-аут — страницы не должны загружаться слишком долго, и это обычно указывает на ошибка. Разные браузеры будут делать разные вещи, и вам нужно будет изменить настройки тайм-аута на все, если задержка будет долгой.

Язык сценариев, который продолжает работать в браузере, сможет периодически запускать что-то, как вы хотите, и даже обновлять страницу — вам нужен код, который продолжает выполняться ПОСЛЕ загрузки страницы.

С другой стороны, если вы хотите использовать только PHP, ваш PHP-код может хранить запрос в базе данных, и тогда у вас может быть другая страница «обработки», которую вы периодически просматриваете с заданием cron или аналогичным в фоновом режиме, который отправляет электронные письма согласно задержка Существуют способы достичь того, чего вы хотите, только с помощью PHP, в зависимости от того, какой конечный результат вы хотите получить, но использование сна () для загрузки страницы, подобной этой, вряд ли будет надежным решением.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]