如何每天执行PHP脚本

时间:2012-08-31 12:36:13

标签: cron ubuntu-server

  

可能重复:
  Cron job on Ubuntu for php

我正在运行和ubuntu服务器,并希望每天运行一个PHP脚本。我做了一些研究,发现cron是最好的方法,但是,这就是我被卡住的地方,互联网上关于cron的很多信息很难理解。

所以我想每天执行一次简单的php脚本,我为测试做的脚本只是从数据库中删除一条记录,但真正的脚本会做更多的事情。

我尝试通过plesk设置任务,这是通过我的网络托管服务提供的,但它似乎没有执行我想要的时候,我用1分钟,22小时,*白天,*星期和*月份,并认为这将在22:01每天执行。

我的服务器上有目录: cron.hourly cron.daily cron.weekly cron.monthly

我以为我可以在那里转储文件,例如每天都会执行,但我猜我需要制作一个cron脚本来调用php脚本吗?

如果我想把文件放在cron.daily文件夹中,我该怎么办呢?

如果我需要在php端采取任何步骤,请告诉我?

非常感谢你的时间。

2 个答案:

答案 0 :(得分:7)

有几种方法可以设置cron作业。假设您有shell访问权限,您可以从控制台执行crontab -e并在那里定义作业,例如:

1 22 * * * command

会在每天22:01触发command(无论是什么)(不知道为什么你将分钟设置为1而不是0。要从那里启动PHP脚本,您必须安装php-cli,然后以这种方式调用它:

1 22 * * * <path>/php -q script.php

你也可以在这里调用bash脚本,设置所有的东西,比如路径等,然后调用你的php脚本形式bash - 有时这样做更简单,而不是为cron制作太长的命令行。以后更新它会更简单。另外,你可以通过设置执行位(chmod a+x script.php)并在你的脚本中添加shell行作为第一行来将你的php脚本变成bash-runnable脚本:

#!/usr/bin/php -q
<?php
   ...

如果您的脚本有太多依赖项,并且您更愿意通过Web调用它,则可以使用wget来模仿浏览器。所以你的command将是:

/usr/bin/wget --delete-after --quiet --spider <URL-TO-YOUR-SCRIPT>

wget手册可以通过man wgetwget -h访问,或on this website。或者你可以使用perl-www包中的HEAD,但它需要perl而wget是独立工具。如果您将HTTPS与自签名证书一起使用,请添加--no-check-certificate。您可能还想设置.htaccess并将对cron脚本的Web访问限制为localhost / 127.0.0.1

答案 1 :(得分:3)

每分钟:

* * * * * /path/script.php

每24小时(每午夜):

0 0 * * * /path/script.php

请参阅有关crontab如何工作的参考:http://adminschoice.com/crontab-quick-reference,以及这个用于构建cron作业x的便捷工具:http://www.htmlbasix.com/crontab.shtml