Cron 如何每天执行一个php脚本
可能重复:Cron 如何每天执行一个php脚本,cron,ubuntu-server,Cron,Ubuntu Server,可能重复: 我正在运行ubuntu服务器,希望每天运行一个php脚本。我做了一些研究,发现cron是最好的方法,然而,这就是我被困的地方,互联网上关于cron的很多信息很难理解 所以我想每天执行一次简单的php脚本,我为测试编写的脚本只是从数据库中删除一条记录,但真正的脚本会做更多 我尝试通过我的web主机服务提供的plesk设置任务,但它似乎没有在我想要的时候执行,我使用1分钟,22小时,*天,*周,*月,并认为这将在每天22:01执行 我的服务器上有以下目录: cron.hourly 克朗
我正在运行ubuntu服务器,希望每天运行一个php脚本。我做了一些研究,发现cron是最好的方法,然而,这就是我被困的地方,互联网上关于cron的很多信息很难理解 所以我想每天执行一次简单的php脚本,我为测试编写的脚本只是从数据库中删除一条记录,但真正的脚本会做更多 我尝试通过我的web主机服务提供的plesk设置任务,但它似乎没有在我想要的时候执行,我使用1分钟,22小时,*天,*周,*月,并认为这将在每天22:01执行 我的服务器上有以下目录: cron.hourly 克朗日报 克朗周刊 cron.monthly 我想我可以将我的文件转储到那里,然后它会每天执行,但我猜我需要制作一个cron脚本来调用php脚本,对吗 如果我想把一个文件放到cron.daily文件夹中,我会怎么做 此外,如果有任何步骤,我需要在php方面,请让我知道
非常感谢您的时间。有几种方法可以设置cron作业。假设您获得了shell访问权限,您可以从控制台执行
crontab-e
,并在那里定义作业,例如:
1 22 * * * command
这将在每天22:01触发命令
(无论是什么)(但不确定为什么将分钟设置为1
,而不是0
)。要从那里启动PHP脚本,您必须安装PHP cli
,然后以这种方式调用它:
1 22 * * * <path>/php -q script.php
如果您的脚本有太多的依赖项,并且您希望通过web调用它,那么您可以使用wget
来模拟浏览器。因此,您的命令将是:
/usr/bin/wget --delete-after --quiet --spider <URL-TO-YOUR-SCRIPT>
/usr/bin/wget--delete-after--quiet--spider
wget手册可通过man wget
或wget-h
或is访问。a您可以使用perl www
包中的HEAD
工具,但它需要perl,而wget是一个独立的工具。如果将HTTPS与自签名证书一起使用,请在调用参数中添加--no check certificate
。您可能还希望设置.htaccess
,并将对cron脚本的web访问限制为每分钟localhost/127.0.0.1:
* * * * * /path/script.php
每24小时(每午夜):
请参阅以下关于crontab如何工作的参考资料:,以及这个构建cron jobx的便捷工具:您能稍微解释一下这些属性吗?我不知道-r to--spider做了什么。谢谢。在您的情况下,-r
很可能不是必需的:“-r'/--recursive”打开递归检索。“我编辑了答案,但是--spider
很有用,因为您不需要下载页面输出,只需让httpd启动它:“--spider”当使用此选项调用时,Wget将表现为Web spider,这意味着它不会下载页面,只需检查页面是否存在。“
。或者可以使用perl www包中的HEAD
工具wget-h
或manwget
将为您提供详细信息或查看此处。因此,如果使用crontab-e命令/usb/bin/wget--delete after--quiet--spider每天都会运行该文件?我就不必在这个文件中为php更改任何路径或任何东西了?再次感谢您的帮助。是的,这个(注意http://url前缀)122***命令/usb/bin/wget--delete after--quiet--spiderhttp://mysite.com/dostuff.php
将在每天22:01通过网络插入脚本。当然,wget
工具必须安装在服务器上,但这不是一个问题(sudo apt get install wget
以确保)这太神奇了,我想我们今晚22:01会发现它是否有效:P顺便问一句,有没有一种方法可以在不等待那么长时间或设置它每分钟运行的情况下测试它?
* * * * * /path/script.php
0 0 * * * /path/script.php