簡體   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