2011-11-04 73 views
-5

我通过输入此命令添加了一个cronjob - crontab -e。我在该文件中添加了以下任务 -cron选项卡不工作php

*/5 * * * * /var/www/web/vendors/shells/aggregated_deals.php 
*/5 * * * * /var/www/web/vendors/shells/deals.php 

这些是php脚本。之后,我重新启动了Apache服务器,但这些脚本没有执行。系统日志日志文件为空。 请帮我运行这个cron。

+3

你有没有尝试自己manualy在浏览器中运行?你有没有尝试使用php运行命令行? –

+0

它是cake1.3还是2.0?看起来像1.3我 – mark

+0

它是蛋糕1.3。 – Abhimanyu

回答

1

我不认为你可以通过调用它这样执行PHP文件,我总是用卷曲:

*/5 * * * * curl http://domain.com/page 

或者我想你可以使用php命令本身,如果你不运行它吨要使用Web服务器:

*/5 * * * * php /var/www/web/vendors/shells/aggregated_deals.php 

无论你在crontab规则星型后会是什么命令执行对系统。如果你在终端上运行命令“/var/www/web/vendors/shells/aggregated_deals.php”,我肯定没有任何事情发生......你需要把它作为一个PHP脚本来调用。

+2

'curl'可以工作,但是你可以用这种迂回网络调用来运行脚本超时(CLI调用默认情况下没有时间限制,IIRC) – Piskvor

+0

@Piskvor:很高兴知道,谢谢。我即将赶快把我的服务器上的所有这些改为使用CLI :) – Clive

+0

YW - 这就是我发现用'wget'调用的看家本地脚本在60秒时超时后:) – Piskvor

0

为什么不用正确的用户调用php-cli?

*/5 * * * * www-data php /var/www/web/vendors/shells/aggregated_deals.php

OR

*/5 * * * * root /usr/bin/php /var/www/web/vendors/shells/aggregated_deals.php

或者类似的东西。 你已经安装了php-cli吗?

+0

如果xe使用'crontab -e'作为普通用户,则xe应该编辑该用户的每个用户的crontab文件;没有必要在那里指定用户。 – Piskvor

+0

Oups!谢谢 ! –

2

我不认为会自行运行 - 你需要使用PHP解释器来运行脚本,就像这样:

/usr/bin/php /var/www/web/vendors/shells/aggregated_deals.php 

请注意,您的安装可能有php别处 - 使用命令which php上命令行来找出位置。

+0

现在我通过添加/ usr/bin/php来编辑我的crontab,但仍然没有执行这两个文件 – Abhimanyu

0

首先,您需要确保您有PHP CLI可用。你可以这样做:

$ php -v 

如果你看到一些理智的输出,那么PHP CLI是可用的。否则,你需要安装它。安装取决于您使用的发行版。

第二,如果你想直接运行CLI脚本,你需要让他们可执行:

$ chmod +x /var/www/web/vendors/shells/aggregated_deals.php 
$ chmod +x /var/www/web/vendors/shells/deals.php 

三,PHP CLI脚本不相关的Apache和你不需要重新启动它,使CLI脚本工作。

+0

以上所有都很好-still脚本没有运行 – Abhimanyu

0

您需要告诉服务器使用PHP执行文件。是否所有的stesps在Elnurs答案描述,并在cron把这些作为你的行:

*/5 * * * * php -f /var/www/web/vendors/shells/aggregated_deals.php > /tmp/my.log 2>&1 
*/5 * * * * php -f /var/www/web/vendors/shells/deals.php > /tmp/my.log 2>&1 

如果不工作,你可能需要包括对PHP的完整路径。 我也刚刚添加了一些行来使脚本记录任何输出。

+0

谢谢,现在cron正在运行,但出现此错误' PHP致命错误:Class'Shell'在第3行的/var/www/web/vendors/shells/deals.php中找不到。它与链接问题有关吗? – Abhimanyu

+2

在这种情况下,我修复了您的cron问题,您需要修复PHP脚本。 – Dunhamzzz

0

你需要运行它的蛋糕风格...你一定会是

cake aggregated_deals > /tmp/my.log 
cake deals > /tmp/my.log 2>&1 

这个蛋糕是你夹饼,你应该从你的应用程序文件夹中运行它运行

cake shellName shellParam 

我你的情况,并...我不知道如何从cron做到这一点,但是这是你有错...

这asuming这些脚本是有效cakeShells

0

你需要告诉服务器用PHP执行文件。是否所有的stesps在Elnurs答案描述,并在cron把这些作为你的行:

*/5 * * * * php -f /var/www/web/vendors/shells/aggregated_deals.php > /tmp/my.log 2>&1 
*/5 * * * * php -f /var/www/web/vendors/shells/deals.php > /tmp/my.log 2>&1 

$ chmod +x /var/www/web/vendors/shells/aggregated_deals.php 
$ chmod +x /var/www/web/vendors/shells/deals.php 
0

我知道这是发布后很长一段时间,但它看起来像我不是唯一的一个。

反正我的建议是将路径添加到PHP中的cron线:

*/5 * * * * /usr/bin/php -f /var/www/web/vendors/shells/aggregated_deals.php > /tmp/my.log 2>&1 
*/5 * * * * /usr/bin/php -f /var/www/web/vendors/shells/deals.php > /tmp/my.log 2>&1 

再次确认权限都不错