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

时间:2018-12-04 20:15:12

标签: php mysql cron 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);

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

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

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

我在上载的Web文件中包含command.php,并将作业设置为每30分钟运行一次以对其进行测试,但是无论我做什么,我似乎都无法使其正常运行。感谢您为解决此问题提供的任何帮助,谢谢

7 个答案:

答案 0 :(得分:4)

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

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

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

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

答案 1 :(得分:2)

要使用cron作业来运行脚本,就像在浏览器中一样:

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

-o重定向stdout,而“> / dev / null 2>&1”将stderr重定向到stdout,这将使您在command.log文件中同时看到结果和任何错误。

答案 2 :(得分:0)

我注意到您正在使用

/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目录中。

希望这会有所帮助

答案 3 :(得分:0)

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

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

它将在每个深夜运行。

有关设定的计划时间,请访问Crontab

答案 4 :(得分:0)

尝试以下任何一种方法

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;

答案 5 :(得分:0)

您只需使用Hostinger面板即可完成这项工作。

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

请检查一下,您可以从那里帮忙。

答案 6 :(得分:0)

悬赏海报的问题:

  

我也有一个用于创建/修改文件夹和文件的php脚本。通过浏览器加载其地址时,它可以完美工作。 cron作业的输出是准确的,但并未对目录进行任何更改。我也在使用OP等Hostinger。

我认为您可能在cron上遇到了权限问题,它对服务器用户有效,但对于cron却不起作用,请尝试使用以下命令与您的apache-user一起使用,我假设您正在使用apache服务器。

crontab -eu apache-user

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

chmod -R 655 /directory