2

可能重复:
Ubuntu for php 上的 Cron 作业

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

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

我尝试通过 plesk 设置一个任务,该任务是通过我的网络主机服务提供的,但它似乎没有在我想要的时候执行,我用 1 表示分钟,22 表示几小时,* 表示一天,* 表示一周,* 表示月,并认为这将在每天 22:01 执行。

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

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

如果我要采取将文件放入 cron.daily 文件夹的方式,我将如何处理?

另外,如果我需要在 php 方面采取任何步骤,请告诉我?

非常感谢您的时间。

4

2 回答 2

9

有几种方法可以设置 cron 作业。假设您获得了 shell 访问权限,您可以crontab -e从控制台执行并在那里定义工作,即像这样:

1 22 * * * command

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

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

你也可以在这里调用 bash 脚本,设置路径等所有东西,然后从 bash 调用你的 php 脚本 - 有时这样做更简单,而不是为 cron 制作太长的命令行。而且以后更新更简单。chmod a+x script.php此外,您可以通过设置执行位 ( ) 并添加 shell 的 shebang将您的 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,或者在这个网站上。或者,您可以使用包中的HEAD工具perl-www- 但它需要 perl 而 wget 是一个独立的工具。如果您将 HTTPS 与自签名证书一起使用,请添加--no-check-certificate到您的调用参数。您可能还想设置.htaccess和限制对您的 cron 脚本的 Web 访问到 localhost/127.0.0.1

于 2012-08-31T12:45:50.457 回答
3

每一分钟:

* * * * * /path/script.php

每 24 小时(每个午夜):

0 0 * * * /path/script.php

请参阅此参考以了解 crontab 的工作原理:http ://adminschoice.com/crontab-quick-reference,以及构建 cron jobx 的便捷工具:http: //www.htmlbasix.com/crontab.shtml

于 2012-08-31T12:46:59.573 回答