繁体   English   中英

我怎样才能让我的 cron 工作在 cpanel 中工作?

[英]How can I get my cron job working in cpanel?

我需要为我的网站自动化一些事情,其中​​之一是每晚午夜清除数据库。 我查看了 cron 工作教程并想出了一个脚本

<?php 
$con = mysqli_connect("localhost", "root", "password", "test");
$sql = "DELETE FROM markers";
$con->exec($sql);
echo "Record deleted successfully";
$con = null;

INSERT INTO `markers` (`name`, `lat`, `lng`, `id`, `questTitle`, `questReward`, `category`, `date_submitted`) VALUES ('Marker1', 41.2952, -92.644, 1, NULL, NULL, NULL, NULL);

这只是擦除数据库并重新插入带有空值的记录,以便全天修改。

我尝试使用 cpanel 设置一个 cron 作业在午夜运行它,我的路径是

/usr/bin/php /home/user/public_html/command.php

我上传的 web 文件中有 command.php 并将作业设置为每 30 分钟运行一次以测试它,但无论我做什么,我似乎都无法让它工作。

如果要运行位于 public_html 目录中的 PHP 脚本,正确的 cron 命令将是:

/usr/local/bin/php /home/**cPaneluser**/public_html/yourscript.php

或者您可以仅使用curl request作为 cron 作业命令。

curl "https://www.yoursite.com/yoursctipt.php"

要使用与在浏览器中相同的方式使用 cron 作业运行脚本:

/usr/bin/curl -o command.log '/home/user/public_html/command.php' >/dev/null 2>&1

-o 重定向标准输出,而 ">/dev/null 2>&1" 将标准错误重定向到标准输出,这将让您看到结果和 command.log 文件中的任何错误。

我注意到你正在使用

/usr/bin/php /home/user/public_html/command.php

你试过只使用普通的 php 命令吗?

30 * * * * php /path/to/php/file >> /path/to/desired/log/file/location

我的假设是 php 没有安装在usr/bin目录中。

您可以像这样在基于 linux 的服务器中设置 cron

0 0 * * * wget -O /dev/null your_url ( http://localhost/test.php )

它将在每个午夜运行。

要设置 cron 时间,请访问Crontab

尝试以下任一方法:

wget -O -q http://example.com/command.php

php /home/user/public_html/command.php

/usr/bin/curl http://www.example.com/command.php

另外,请确保您在 Cpanel cron 作业中输入您的电子邮件地址,以便您至少可以知道脚本正在按计划运行,如果是,那么问题可能出在其他地方。

此外,在您的代码中,有这一行:

INSERT INTO `markers` (`name`, `lat`, `lng`, `id`, `questTitle`, `questReward`, `category`, `date_submitted`) VALUES ('Marker1', 41.2952, -92.644, 1, NULL, NULL, NULL, NULL);`

将这一行字面意思放在脚本中没有任何作用,应该会导致错误。 您应该正确执行此操作。 例如,你的脚本应该看起来像这样:

<?php
$con = mysqli_connect("localhost", "root", "password", "test");
$sql = "DELETE FROM markers";
$con->exec($sql);
echo "Record deleted successfully";
$sql = "INSERT INTO `markers` (`name`, `lat`, `lng`, `id`, `questTitle`, `questReward`, `category`, `date_submitted`) VALUES ('Marker1', 41.2952, -92.644, 1, NULL, NULL, NULL, NULL);"
$con->exec($sql);
$con = null;

您可以简单地使用您的 Hostinger 面板来完成这项工作。

https://www.hostinger.com/tutorials/cpanel/#How-to-Create-a-Cron-Job

请检查一下,您可以从那里帮助自己。

赏金海报问题:

我也有一个创建/修改文件夹和文件的 php 脚本。 当它的地址通过浏览器加载时,它工作得很好。 cron 作业的输出是准确的,但它没有进行任何应有的目录更改。 我也像 OP 一样使用 Hostinger。

我的看法可能是您在 cron 上遇到了权限问题,它适用于服务器用户,但不适用于 cron 尝试使用以下命令与您的 apache 用户一起使用我假设 apache 服务器是您正在使用的。

crontab -eu apache-user

或者您可以向所需的用户或组授予权限,让他们操作如下所示的目录和文件。

chmod -R 655 /directory

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM