Bonjour,
J’ai un petit soucis avec une tâche qui s’execute en tache de fond…
Je me suis fait un plugin pour gérer des propriété immobilière et chaque jour, via FTP, Centris (un organisme du Québec qui gère l’ensemble des propriétés a vendre), vient déposer, via FTP, un fichier ZIP qui contient des fichier CSV que je dois traiter…
Lorsque je suis connecté via l’interface /ecrire de spip et que j’execute manuellement la tâche, dans ?exec=job_queue tout fonctionne…
Mais quand elle doit s’excuser toute seule et qu’il n’y a pas d’admin de connecté, ça ne fonctionne pas…
Dans mon script, j’ai ceci :
$repertoire_centris = ‹ …/centris ›;
$fichiers = array_filter(scandir($repertoire_centris, SCANDIR_SORT_DESCENDING),function ($item) {
return 0 !== strpos($item, ‹ . ›);
});
$fichier = $fichiers[0];
Qui me permet de récupérer le nom du fichier le plus récent qui a été uploadé par centris…
Quand je l’execute manuellement par exec=job_queue il y a toujours une valeur dans $fichier …
Mais quand il s’execute tout seul (j’ai mis un cron sur mon serveur pour appeler ?action=cron tout les 10 minutes), $fichier est toujours vide….
Est-ce que j’ai quelque chose a ajouter pour un droit quelconque pour accéder aux répertoire ou quelque chose du genre que j’aurais oublié ?
Voici plus bas, le début de mon code complet pour cette fonction… En mode automatique, ça bloque toujours au dernier if de ce bout de code…
Merci !
spip_log(‹ Coucou – Genie Immobilier ›,‹ import_centris. ›._LOG_ERREUR);
if(!function_exists(‹ lire_config ›)) include_spip(‹ inc/config ›);
// on récupère le nom du dernier fichier zip qui a été traité
$dernier_fichier_importe = lire_config(‹ immobilier_centris_derniere_maj ›);
// On regardes le nom du fichier zip actuellement le plus récent
$repertoire_centris = ‹ …/centris ›;
$fichiers = array_filter(scandir($repertoire_centris, SCANDIR_SORT_DESCENDING),function ($item) {
return 0 !== strpos($item, ‹ . ›);
});
$fichier = $fichiers[0];
// Si les 2 nom de fichiers sont identique, rien a faire, on sort !
//spip_log($fichier,‹ import_centris. ›._LOG_ERREUR);
//spip_log($dernier_fichier_importe,‹ import_centris. ›._LOG_ERREUR);
if ($fichier == $dernier_fichier_importe) {
spip_log(‹ fichier zip déjà importé, on sort ›,‹ import_centris. ›._LOG_ERREUR);
return;
}
include_spip(‹ inc/documents ›);
// S’il n’y a pas de fichier dans le repertoire, on peut arrêter ici !
spip_log(‹ Les conditions semble réunies… On va pouvoir procéder ›,‹ import_centris. ›._LOG_ERREUR);
spip_log(‹ Sauf si $fichier est vide ›,‹ import_centris. ›._LOG_ERREUR);
if (!$fichier) return;
David Fredette