2016-02-01 175 views
0

我有php函数,每隔15分钟运行一次。我发现了一些类似这样的问题:如何在php中运行cron作业

How can I make a cron to execute a php script?

,并在我的情况,我应该使用这样的:

*/15 * * * * /usr/local/bin/php -q /path/to/my/file.p

但我应该在终端运行此命令,把它放在我的档案?一旦它被执行,它会一直运行还是会有时间限制?

谢谢!

+0

编辑crontab? – frz3993

+0

我是新来的cron工作..请你解释一下吗? –

+1

在linux发行版中,在终端输入“crontab -e”进行编辑。你在哪里放线。 'crontab -l'来查看作业。 – frz3993

回答

1

10 * * * * /usr/bin/php /www/virtual/username/cron.php > /dev/null 2>&1 有两个主要部分:

第一部分是 “10 * * * *”。这是我们安排计时器的地方。 该行的其余部分是从命令行运行的命令。 本例中的命令本身有三个部分:

“/ usr/bin/php”。 PHP脚本通常不能自行执行。因此我们需要通过PHP解析器运行它。 “/www/virtual/username/cron.php”。这只是脚本的路径。 “>/dev/null 2> & 1”。这部分处理脚本的输出。稍后再说。

请仔细阅读本教程http://code.tutsplus.com/tutorials/scheduling-tasks-with-cron-jobs--net-8800

+0

谢谢你的回答!所以,我应该运行这个命令:'crontab -e',然后在控制台中运行:'15 * * * */usr/bin/php /path/to/my/file.php>/dev/null 2>&1 '然后运行:'crontab -l'。是对的吗?我的/ file.php中的脚本每15分钟运行一次? –

3

PHP不运行cron作业,你的服务器(或操作系统)是这样做的。有两种方法可以把你的cron作业工作:

#1

使用shell命令crontab。命令crontab -l将列出您的用户的所有现有cronjobs(最有可能还没有)。 crontab -e将打开一个编辑器窗口,您可以在其中添加一个cron作业作为新行。保存并且您的cron作业正在运行。 crontab -l再次,你会看到它聆听。 crontab -r删除所有cont工作。

您也可以从文件启动cron作业。只需键入crontab filename(例如,crontab textfile.txt

或者,您也可以从PHP中启动它。只要把你的cron作业到一个文件并启动它通过exec()像这样:

file_put_contents('textfile.txt', '*/15 * * * * /usr/local/bin/php -q /path/to/my/file.php'); 
exec('crontab textfile.txt'); 

#2

如果您拥有管理员权限的系统上,你可以在/etc/cron.d/创建一个文件(例如,称它为my_cronjob)并将您的cron作业放在那里。在这种情况下,您可能希望以用户身份运行它(而不是管理员,这样会比较不安全)。这是很容易做到,只需添加用户名像这样:

*/15 * * * * user_name /usr/local/bin/php -q /path/to/my/file.p 

(在这种情况下,cron作业将不会被crontab -l下发EMAIL:[email protected]


回答你的第二个问题:只要cron作业在crontab -l中进行侦听,或者只要文件位于/etc/cron.d中,cron作业就会以每15分钟的速度运行。

+0

感谢您的回答!如果我使用'<?php crontab script.txt',我应该把它放在script.txt文件中吗?它会执行我的文件script.txt?如果我使用'file_put_contents('script.txt','*/15 * * * */usr/local/bin/php -q /path/to/my/file.p'); exec('crontab script.txt');'我应该把它放在header.php文件还是在哪里?谢谢! –

+1

@mistery_girl通常你会启动一个cron作业,然后让它运行,所以'header.php'不是一个好地方。创建一个新的PHP文件,您只需手动调用一次(意思是:将其URL直接输入到地址栏中),以启动cron作业。 'file_put_contents'将在服务器上创建一个文件,'exec('crontab file');'然后将它作为cron作业添加。使用'<?php crontab script.txt'将不起作用。 – antix

+0

我可以使用:'file_put_contents('script.php','*/15 * * * */usr/local/bin/php -q /script.php'); exec('crontab script.php');' - 要成为同一个文件 - crob作业和我的php代码? –