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

0

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

Это код цикла, который я имею прямо сейчас

$time = $_POST["time"];

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

}

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

  • 0
    вы должны сделать это с помощью jquery / ajax и setTimeout или setInterval
Теги:
timer
loops

1 ответ

1
Лучший ответ

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

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

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

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

  • 0
    Хорошо, это имеет большой смысл. Я посмотрю в JavaScript тогда!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню