2014-12-06 88 views
0

我在他们经常要在$时间变量执行PHP循环每X秒

这个定义发送消息的用户类型是循环代码我现在所拥有的

$time = $_POST["time"]; 

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

} 

这个代码的问题是消息永远不会被发送,我相信这是因为睡眠函数会暂停脚本。有任何想法吗?

+0

你应该使用jQuery/Ajax和的setTimeout或setInterval的,而不是 – CRABOLO 2014-12-06 08:00:21

回答

1

PHP是不是真的这样做的正确的语言,你想试试JavaScript或类似。

PHP的设计让它在加载时动态地构建一个页面。通过把一个睡在那儿,你延缓页面的加载时间,以及服务器和/或浏览器最终将超时 - 预计不会页采取过长的时间来加载,这通常表示错误。不同的浏览器会做不同的事情,如果延迟很长,你需要修改所有的超时设置。

是不断在浏览器中运行的脚本语言将是能像你一样要定期踢东西了,甚至更新的页面 - 要在其后的页面加载的不断执行代码。或者,如果您只需要PHP,您的PHP代码可以将请求存储在数据库中,然后您可以在后台定期使用另一个“处理”页面,并使用cron作业或类似内容发送出去按照时间延迟发送电子邮件。有办法达到你想要什么用PHP只,这取决于实际最终导致你后,但是把睡眠()到这样一个网页的加载速度是不可能成为一个可靠的解决方案。

+0

好,使一个很大的意义做到这一点。那么我会看看javascript! – DanMossa 2014-12-06 10:13:07