我正在运行和ubuntu服务器,并希望每天运行一个PHP脚本。我做了一些研究,发现cron是最好的方法,但是,这就是我被卡住的地方,互联网上关于cron的很多信息很难理解。
所以我想每天执行一次简单的php脚本,我为测试做的脚本只是从数据库中删除一条记录,但真正的脚本会做更多的事情。
我尝试通过plesk设置任务,这是通过我的网络托管服务提供的,但它似乎没有执行我想要的时候,我用1分钟,22小时,*白天,*星期和*月份,并认为这将在22:01每天执行。
我的服务器上有目录: cron.hourly cron.daily cron.weekly cron.monthly
我以为我可以在那里转储文件,例如每天都会执行,但我猜我需要制作一个cron脚本来调用php脚本吗?
如果我想把文件放在cron.daily文件夹中,我该怎么办呢?
如果我需要在php端采取任何步骤,请告诉我?
非常感谢你的时间。
答案 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 wget
或wget -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