2015-10-13 70 views
0

我想在我的服务器上每五分钟执行一次php脚本,它是一个单独运行良好的php脚本,自从我的浏览器以来,我尝试使用“php -f php_file.php”进行控制台操作。但我需要每天自动执行它。我正在谷歌搜索,并在这里,但任何解决方案为我工作:我怎样才能让cron执行一个php脚本?

首先我编辑我的crontab,我也重新启动cron,以确保它已正确更新。

*/5 * * * * /usr/bin/php /var/www/myscript.php 

,我尝试了以下太:

*/5 * * * * /usr/bin/php -f /var/www/myscript.php 

我所做的可执行脚本也检查我的系统日志(在那里我可以看到我的cron被正确执行,但不执行PHP脚本),我也尝试将cron的输出重定向到一个文件,但它将文件留空。 任何人都可以帮助我?

致以问候

+0

“我可以看到我的cron执行正确,但它不执行php脚本” - 你得到了什么输出?是什么让你认为cron正在运行,但没有运行PHP脚本? “我也尝试将cron的输出重定向到一个文件” - 如何? – Quentin

回答

1

您的脚本是可执行文件,正处于正确的轨道上。

#!/usr/bin/php 
<?php 
// here goes your script 

如果脚本执行由这样

$ ./script.php 
运行它,你可以测试:

如果需要

$ chmod +x script.php 

这个添加到文件的最顶部再来一次

设置你的cron下面的工作来设置一些日志记录,但确保你输出一些东西om您的脚本,请使用printecho和相关消息。

*/5 * * * * /var/www/script.php >> /var/www/script.log 2>&1 

我们将标准输出和错误重定向到script.log文件中。

每5分钟检查一次活动。


更新:

试试这个在您的PHP脚本

$file = '/var/www/script.txt'; 
for($i=0;$i<9;$i++){ 
    $entry = date("Y-m-d H:i:s") . " " . $i . PHP_EOL; 
    echo $entry; // this should write to the log file 

    file_put_contents($file, $entry, FILE_APPEND | LOCK_EX); 
    // and this should write to the script.txt file 
} 

基本上我们给的完整路径文件和传递FILE_APPEND标志,所以我们不会每次都重写。

运行该脚本并检查文件是否已创建,默认行为是创建该文件(如果该文件不存在)。

+0

我添加了一个打印和是它显示它,但在我的PHP脚本,我需要打开并写入一个文件。我正在使用以下代码测试它: 但是cron作业未创建该文件,感谢回复我 –

+0

无法看到相关的代码,更好地编辑您的问题并将其包括在其中而不是评论中的这里。 –

+0

是的,对不起,我按了输入错误 –

相关问题