我有一个PHP脚本需要在每个工作日的某些时间运行。 cron
或Windows任务计划程序是唯一的方法吗?
有没有办法在另一个PHP脚本中设置它?
答案 0 :(得分:5)
取决于时间需要多精确。我所见过的一种技术(被称为“穷人的cron”)就是让一个经常访问的脚本(例如网站的主页)在一定时间后在第一页加载时触发任务(跟踪在数据库)。
如果您需要任何类型的保证准确性,cron或Windows计划任务确实是最佳选择。如果您的主持人不支持他们,那么是时候更好了。
答案 1 :(得分:2)
除cron
或Scheduled Tasks
外,您可以让PHP脚本始终运行它。该过程应该睡眠(在循环内),直到达到时间。然后,该过程可以执行剩余的功能/方法。或者,您可以设置另一个脚本(将充当守护程序)来检查时间并执行其他脚本。
答案 2 :(得分:2)
好了,因为Web是一种拉动机制,你必须采取某种行动来触发PHP脚本的执行。 cron是Windows上的* nix和任务调度程序的选项。您也可以编写自己的具有计时器的服务,但仅在需要时,这在更新程序,作业等的Windows服务中很常见。
你可以做到的一种方法是在cron任务中为每个需要的动作调用一个php脚本。或者一个执行其他任务的php脚本。基于Web的任务(例如PHP)的问题是超时。确保您的任务不到60-90秒。如果没有,你可能会考虑使用python,perl或ruby甚至bash脚本来完成工作而不是PHP脚本。
尽管如此,cron似乎是最好的选择。你必须用wget调用你的脚本。这里有一些例子:http://www.thesitewizard.com/general/set-cron-job.shtml例如,它每天在11:
运行脚本30 11 * * * /usr/bin/wget http://www.example.com/cron.php
答案 3 :(得分:1)
答案 4 :(得分:1)
如果这是在远程服务器上你没有cron访问权限,你可以在你的计算机上设置cron / windows scheduler,打开一个Web浏览器到包含你想要运行的脚本的页面
答案 5 :(得分:0)
您可能想要使用cron(或Windows预定任务)。
如果你真的想要,你可以设置另一个PHP脚本,以无限循环连续运行(在循环中使用睡眠命令,比如30秒左右)然后当你达到你想要的日期/时间时执行其他脚本通过shell命令调用。虽然可能,我想不出是否有一个很好的理由使用这种方法而不是cron /预定任务
答案 6 :(得分:0)
你可以编写一个在预定义的时间内运行主脚本的长时间运行的脚本,但这将是非常不必要的,容易出错,并且它基本上是“在phph中重写cron”。
使用真正的cron本身将更容易,也是一个更强大的解决方案。如果要打包应用程序,可以将文件放在/etc/cron.d中,其中包含运行应用程序的单个cron行。
答案 7 :(得分:0)
您需要在Windows下使用cron作业(在Linux / Unix下)或计划任务。 可以连续运行另一个脚本,它会检查时间并以指定的时间间隔执行脚本,但使用操作系统提供的机制更容易管理,并且可以重新启动,等等。
答案 8 :(得分:0)
统一服务器项目在cron不可接受的环境中对mimicking cron提出了一些很好的建议。尽管如此,如果cron是一个选项,请使用它。