Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/04/2015, à 11:07

IBACK

Tâche CRON / Script PHP ne s'exécute pas !

Bonjour à tous,

je souhaite exécuter un script PHP via CRONTAB mais malheureusement rien ne se passe ! sad

Voici mon fichier CRON :

*/2 9-18 * * mon,tue,wed,thu,fri root /usr/bin/php -f /home/moi_meme/batch/mon_script.php >/dev/null 2>&1

je veux donc exécuter ce script toutes les 2 minutes (pour tester) de 9h à 18h du lundi au vendredi - utilisateur = root

mon_script.php a bien les droits nécessaires (exécution "X").

LAMP est installé.

PHP version :

PHP 5.3.10-1ubuntu3.16 with Suhosin-Patch (cli) (built: Feb 13 2015 20:15:22)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

Une idée sur le problème ?

Merci pour votre aide

Ubuntu 12.04 (32 bits) installé

Fabrice

Hors ligne

#2 Le 09/04/2015, à 11:31

pires57

Re : Tâche CRON / Script PHP ne s'exécute pas !

On peut voir le script aussi?


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#3 Le 09/04/2015, à 11:43

IBACK

Re : Tâche CRON / Script PHP ne s'exécute pas !

Voici le script.

L'objectif de ce script est de générer un fichier CSV.

si on l'exécute manuellement, le fichier CSV est bien généré (pas de problème de droits) !

<?php
ini_set("max_execution_time", 'time_limit');

// extraire les données
include "../data/xxxx.php";

// générer le fichier CSV 
if ($cdes !== false) {
	if (mysql_num_rows($cdes) > 0) {
		$list = array();

		$numero_ligne = 0;
		$meme_commande = "";
		$nb_cdes = 0;

		while ($reponse = mysql_fetch_array($cdes)) {
			if ($reponse["id_order"] != $meme_commande) {
				$numero_ligne = 1;
				$nb_cdes++;

				include "../data/yyyyy.php";

				if ($error)
				break;
			}

			include "../data/zzzz.php";

			if ($error)
			break;

			// BtoC -> si particulier BtoC sinon BtoB
			$BtoC = "Y";

			if ($reponse["group"] != "Particuliers")
			$BtoC = "N";

			$item = array($activite,
			$depot,
			str_pad($reponse["id_order"], 15),
			$service_transporteur,
			$code_regr_chargement,
					'               ',
			$numero_ligne++,
			str_pad($reponse["reference"], 16),
			$reponse["qte"],
		'                    ',
			str_pad(substr($reponse["company"] . " " . $reponse["firstname"] . " " . $reponse["lastname"],0,30), 30),
			str_pad($reponse["address1"], 30),
			str_pad($reponse["address2"], 30),
			str_pad($reponse["other"], 30),
			str_pad($reponse["phone"], 15),
			str_pad($reponse["postcode"], 10),
			str_pad($reponse["city"], 30),
			$reponse["iso_code"],
			str_pad($reponse["email"], 70),
			$BtoC,
		'             ',
		'                                        ',
			str_pad($reponse["id_customer"], 40)
			);

			$list[] = $item;

			$meme_commande = $reponse["id_order"];
		}

		// générer CSV
		if (!$error) {
			$fp = fopen("../ftp/out/ORD_ACT_I_" .
			substr($today['year'], 2, 2) . $month . $day . "_"  . $today['hours'] . $today['minutes'] . $today['seconds'] . ".csv", 'w');

			foreach ($list as $fields)
			fputcsv($fp, $fields, ";");

			fclose($fp);
		}
	}
}
?>

Hors ligne

#4 Le 09/04/2015, à 12:09

credenhill

Re : Tâche CRON / Script PHP ne s'exécute pas !

hello
récupérer les massages d'erreurs

*/2 9-18 * * mon,tue,wed,thu,fri root /usr/bin/php -f ... >/tmp/log 2>&1

Hors ligne

#5 Le 09/04/2015, à 12:40

gl38

Re : Tâche CRON / Script PHP ne s'exécute pas !

la ligne

include "../data/xxxx.php";

ne doit pas donner le bon fichier quand cron l'exécute : il faut mettre le chemin entier.
Cordialement,
Guy

Hors ligne

#6 Le 09/04/2015, à 14:01

tiramiseb

Re : Tâche CRON / Script PHP ne s'exécute pas !

Salut,

2 ou 3 questions et commentaires :
- où est placé ce fichier cron ? C'est un cron système (/etc/crontab ou /etc/cron.d/) ou un cron utilisateur (commande "crontab -e")
- plutôt que les noms de jours tu peux mettre leurs numéros (1-5), c'est plus concis
- là ça va tourner de 9h à 18h58, pas de 9h à 18h

Par ailleurs, OK avec gl38, un "include" avec un chemin relatif demande à ce que tu sois dans le bon répertoire lors de l'exécution, tu peux alors faire précéder la commande de "cd /home/moi_meme/batch/;"...

Hors ligne

#7 Le 09/04/2015, à 15:13

IBACK

Re : Tâche CRON / Script PHP ne s'exécute pas !

Merci pour vos réponses.

Ma tâche CRON fonctionne désormais.

plusieurs sources de problème :

1/ PATH incomplet

2/ Dans script PHP, chemins incorrects

3/ erreur dans ma tâche CRON ("root" supprimé)

Merci pour la remarque "18h58" !

Hors ligne

#8 Le 09/04/2015, à 15:17

tiramiseb

Re : Tâche CRON / Script PHP ne s'exécute pas !

3/ erreur dans ma tâche CRON ("root" supprimé)

Je comprends par là que tu as fait une tâche utilisateur et non une tâche système.

En tant que root, c'est à éviter : généralement, les tâches programmées par root sont des tâches plutôt "système" et pas dédiées à l'utilisateur root en particulier...

Hors ligne

#9 Le 09/04/2015, à 15:22

IBACK

Re : Tâche CRON / Script PHP ne s'exécute pas !

tout à fait. wink

Hors ligne