每 X 秒执行一次 PHP 循环


Perform a PHP loop every X seconds

我让用户输入他们希望发送消息的频率,如$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((放入这样的页面加载中不太可能是一个可靠的解决方案。