每5分钟在服务器上执行一次php脚本
我想每5分钟运行一个php脚本,处理一些简单的mysql查询以识别潜在的错误,如果错误被记录为数据库条目,php脚本将发送一封电子邮件 根据我的研究,似乎cron作业(或任务调度器)通常负责在指定时间运行脚本,但是我在使用的托管服务中找不到这个选项(运行“Parallels-Plesk Panel 11.0.9”作为我可以访问的管理界面) 因此,我尝试了以下“伎俩”:每5分钟在服务器上执行一次php脚本,php,mysql,cron,Php,Mysql,Cron,我想每5分钟运行一个php脚本,处理一些简单的mysql查询以识别潜在的错误,如果错误被记录为数据库条目,php脚本将发送一封电子邮件 根据我的研究,似乎cron作业(或任务调度器)通常负责在指定时间运行脚本,但是我在使用的托管服务中找不到这个选项(运行“Parallels-Plesk Panel 11.0.9”作为我可以访问的管理界面) 因此,我尝试了以下“伎俩”: 要激活脚本,我输入url(“…/alert.php?a=1”)。这在几分钟内可以正常工作,但是在2或3分钟后脚本似乎停止执行
要激活脚本,我输入url(“…/alert.php?a=1”)。这在几分钟内可以正常工作,但是在2或3分钟后脚本似乎停止执行
您知道如何防止脚本停止,或者如何实现每5分钟自动执行一次脚本(而不能够访问cron作业)的其他建议吗
谢谢 试试这个解决方案:
<?php
$interval=5; //minutes
set_time_limit(0);
while (true)
{
$now=time();
include("alert_exe.php");
sleep($interval*05-(time()-$now));
}
?>
通过重新启动apache来停止脚本,或者从内部脚本中生成一个返回值,该返回值将while(true)更改为while(false)有一个
max\u execution\u time
参数,如果花费的时间太长,会停止脚本,默认情况下为30秒,请参阅文档-
您可以尝试在脚本开头执行set\u time\u limit(0)
(请参阅),或者更改max\u execution\u time
参数本身
但总的来说,我不会采用这种解决方案,它不是很可靠。最好找到一个可以使用
cron
的主机,或者您可以尝试寻找一些外部服务,每5分钟ping一次您的脚本(可能您可以使用监视web应用程序运行状况的服务) 托管服务将保护其服务器免受长时间运行的脚本过载的影响,并将配置一个超时,在该超时之后,这些脚本将被中止(特别是请参见和max_execution_time)
如果您的电脑可以保持开机状态,另一种解决方案是让它每5分钟向服务器发送一次请求:
<?php
// Your PHP code that has to be executed every 5 minutes comes here
?>
<script>
setTimeout(function () { window.location.reload(); }, 5*60*1000);
// just show current time stamp to see time of last refresh.
document.write(new Date());
</script>
setTimeout(函数(){window.location.reload();},5*60*1000);
//只需显示当前时间戳即可查看上次刷新的时间。
文件。写入(新日期());
您正在运行的主机肯定已为长时间运行的脚本配置了超时,以防止其过载。请查看您的主机解决方案规范。有些不允许使用cron,尤其是免费的cron。但是,有一些允许使用cron。您最好的解决方案可能是简单地找到一个支持cron的主机,这就是我遇到这个问题时所做的。同样,主机可能会阻止您的脚本运行。如果您使用的是共享主机,则没有办法。从浏览器执行的脚本遵循php.ini执行时间限制。感谢您的建议-非常有魅力,我有一台备用电脑来完成这项工作!如果你没有备用电脑,另一种方法是每5分钟为你提供一个免费的网站,比如ping脚本。
<?php
// Your PHP code that has to be executed every 5 minutes comes here
?>
<script>
setTimeout(function () { window.location.reload(); }, 5*60*1000);
// just show current time stamp to see time of last refresh.
document.write(new Date());
</script>