我正在运行 Uniform Server Zero XIV,并尝试使用 cron 每 15 分钟运行一次 php 脚本。手动运行时,脚本会执行其应执行的操作,即更新数据库中的值。但是,cron 似乎从未真正执行过该脚本。
cron日志表明crontab具有正确的路径并且正在执行。
10/06/2021 12:53:08 - Run OK --- C:\Users\myuser\Zero\UniServerZ\www\database\cronUpdate.php
cron 配置使用绝对路径。
[update]
start = 2021-05-14 8:00:00
period = 300
path = \www\database\cronUpdate.php
ref = 1623329287
这是我尝试执行的 php 文件。本质上,它提取 mysql 数据库中的所有主机名并将它们发送到更新函数。更新函数提取有关单元的 API 信息并相应地更新 mysql 数据库,但不返回。
include_once '../database/dbh.php';
# Get all hostnames
$sql = "SELECT hostname FROM units;";
$result = mysqli_query($conn, $sql);
while($row = mysqli_fetch_array($result)) {
# Add all units to formdata to be submitted
$data['formData'][] = $row['hostname'];
}
$fields = http_build_query($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/database/dbUpdate.php");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
$cResult = curl_exec($ch);
curl_close($ch);
我尝试在配置中使用 URL,但同样不起作用。我还尝试将更新文件写入执行日志,但什么都没写出来,这说明 cron 无法执行此脚本。您知道 cron 无法执行此脚本的原因吗?用其他语言编写此脚本是否值得?
据记录,服务器正在运行 php 8.0.3 和 mysql 8.0.23
答案1
尝试将路径更改为:
路径 = http://www/database/cronUpdate.php