J'utilise Uniform Server Zero XIV et j'essaie d'utiliser le cron pour exécuter un script php script toutes les 15 minutes. Lorsqu'il est exécuté manuellement, le script fait ce qu'il est censé faire, c'est-à-dire mettre à jour les valeurs dans une base de données. Cependant, le cron ne semble jamais exécuter réellement le script.
Le journal cron indique que la crontab a le bon chemin et s'exécute.
10/06/2021 12:53:08 - Run OK --- C:\Users\myuser\Zero\UniServerZ\www\database\cronUpdate.php
La configuration du cron utilise un chemin absolu.
[update]
start = 2021-05-14 8:00:00
period = 300
path = \www\database\cronUpdate.php
ref = 1623329287
Voici le fichier php que j'essaie d'exécuter. Essentiellement, il récupère tous les noms d'hôtes dans la base de données mysql et les envoie à une fonction de mise à jour. La fonction de mise à jour tire des informations API sur les unités et met à jour la base de données mysql en conséquence, sans retour.
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);
J'ai essayé d'utiliser une url dans la configuration, mais cela ne fonctionne pas non plus. J'ai également essayé que le fichier de mise à jour écrive dans un journal à l'exécution et rien n'est jamais écrit, ce qui me dit que le cron ne peut pas exécuter ce script. Une idée sur la raison pour laquelle le cron ne peut pas exécuter ce script ? Cela vaudrait-il la peine d'écrire ce script dans un autre langage ?
Pour mémoire, le serveur fonctionne avec php 8.0.3 et mysql 8.0.23.