У меня есть тип пользователя, как часто они хотят отправить сообщение, определенное переменной $ time
Это код цикла, который я имею прямо сейчас
$time = $_POST["time"];
for ($x = 0; $x < $amount; $x++) {
mail($completenum, $subject, $message, $headers);
sleep($time);
}
Проблема с этим кодом заключается в том, что сообщения никогда не отправляются, я верю, потому что функция ожидания останавливает скрипт. Есть идеи?
PHP на самом деле не правильный язык для этого, вы хотите попробовать javascript или подобное.
PHP предназначен для динамического создания страницы при ее загрузке. Помещая спать там, вы задерживаете время загрузки страницы, а сервер и/или браузер в конечном итоге уходят в прошлое - страницы не должны слишком долго загружаться, и это обычно указывает на то, что ошибка. Различные браузеры будут делать разные вещи, и вам нужно будет изменить настройки таймаута на все, если задержка будет длинной.
Язык сценариев, который работает в браузере, будет способен периодически удалять что-то, как вы хотите, и даже обновлять страницу - вам нужен код, который продолжает выполняться ПОСЛЕ загрузки страницы.
Альтернативно, если вы хотите только PHP, ваш PHP-код мог бы хранить запрос в базе данных, а затем у вас могла бы быть другая страница "обработки", на которую вы попадаете периодически с заданием cron или аналогичным в фоновом режиме, которое отправляет электронные письма в соответствии с время задержки. Есть способы достичь того, что вы хотите, только с PHP, в зависимости от конечного конечного результата, который вы после, но включение sleep() в загрузку страницы, как это вряд ли будет надежным решением.