【问题标题】:How to set CRON using php and run php file with the help of it?如何使用 php 设置 CRON 并在它的帮助下运行 php 文件?
【发布时间】:2012-10-29 16:28:34
【问题描述】:

我有两个 php 文件。在一个 php 文件中,有一个简单的 html 表单,当用户设置时间和日期并提交表单然后所有下拉值存储在数据库中时,我为 cronjob 选择时间和日期创建了一些下拉列表。

现在在这个存储值的帮助下,我需要设置 cronjob,当 cron 执行时,它会运行另一个 php 文件,我在其中编写了一些用于生成 xml 文件的代码。 并且这个文件每次都会运行,时间由用户存储在数据库中。

通过使用 Cpanel 我可以做到这一点,但我不想使用 cpanel。

请给我一些适当且有效的解决方案,我真的需要它。 提前致谢。

【问题讨论】:

  • 如果没有 Cpanel 或类似的,您将必须获得一个外壳到盒子和crontab -e 直接编辑它。
  • 你不应该像这样使用croncrontab 文件是完全静态的。为什么不更新数据库时也更新文件?似乎是最好的解决方案,也是最容易实施的解决方案。
  • @EdHeal 感谢您的评论,但我不知道如何使用 crontab 执行此操作。请给我一些例子。
  • @paragbhargav - 不要为此使用 cron。当您的代码更新数据库时,同时更新文件。
  • @EdHeal 你没有正确理解我的问题。一旦用户设置了时间和日期,他就不需要再次设置时间和日期,它会自动运行另一个 php 文件并生成 xml 文件并保存。

标签: php cron crontab cron-task


【解决方案1】:

使用phps system()exec() 函数调用crontab 命令来替换或修改Web服务器运行所在帐户的现有crontab。您可能必须确保允许用户使用 cron 系统,这取决于您使用的操作系统。

在 crontab 中,您可以使用两种策略之一来运行 php 脚本_ - 像任何普通命令一样调用 php cli 解释器,例如:/usr/bin/php 并给它解释脚本。作为替代方案,您也可以在 php 脚本中使用 shebang 并将其作为简单的可执行文件调用。 - 当您想在 Web 服务器中执行脚本时,使用 wget 调用指向您的 Web 服务器(可能是 localhost)的 url。

这可以作为您试验的起点:

#!/usr/bin/php
<?php
// the time tokens to be fed into the crontab line
$time=array('10','*','*','*','*');

// the actual command to be executed
$command=sprintf("crontab -l | (cat;echo \"%s\t%s\") | crontab", 
                 implode(' ',$time), 
                 '/usr/bin/beep');

// execute command
$result=system($command);

// output result of execution
if ($result)
  echo "Result: $result\n";
else
  echo "FAILURE!\n";
?>

从 CLI 调用时为我工作。

【讨论】:

  • 我尝试使用这个 exec('echo -e "crontab -l * * * * * /home/username/public_html/myserver.com/client/test/mycron2.php" | crontab - ');但什么也没发生。
  • 不,不要使用 echo,使用命令 crontab 本身。检查参数的手册页。并评估exec()system()的返回值以及服务器错误日志。
  • 谢谢,但是........仍然没有得到你想说的。您能否向我证明一些示例代码以便我更好地理解它??
  • 我得到“失败!”当我运行上面的脚本时。 '/home/username/public_html/myserver.com/client/test/mycron2.php' 文件呢??
  • 我不知道那个文件mycron2.php 是什么,所以我不能说什么。并且因为您因此而失败的事实:也许是时候开始自己寻找问题所在了。这是您的系统,您应该尝试了解事物的工作原理。如果东西不起作用,您不能等待其他人告诉您输入并抱怨。我应该如何知道您的设置?如果该用户帐户完全被允许使用 cron 系统(之前提到过......)并且和和。首先直接尝试该管道序列(不使用 php)并了解它的作用以及存在什么问题......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-21
相关资源
最近更新 更多