Commande Cron et Fonction copy php

blump08
Invité n'ayant pas de compte PHPfrance

28 juil. 2011, 19:45

Bonsoir à Tous,

J'ai un petit problème. J'ai un script php qui fontionne correctement lorsque je le lance dans la barre d'adresse mais ne se lance pas avec cron.
Le problème ne vient pas de la commande cron elle est correcte je l'utilise pour d'autre script.

script.php :
<?php include_once('/var/www/vhosts/******/httpdocs/parsehtml/simple_html_dom.php');
$path= '/var/www/vhosts/*****/httpdocs/images/stories/graph_accueil/corn.png';
$html = file_get_html('http://www.*****.com/charts/index.php?sym=ZCU11&type=CANDLE&a=I:5&studies=BOLL;EXP');
$i=0;
 foreach($html->find('td#pagebody') as $a)
  foreach($a->find('img') as $element) {
       $liens[$i] = 'http://www.*****.com'.$element->src;
	   $i++;
	   }
	copy($liens[2],$path);
?>
si je remplace ce script par celui là cela fontionne avec cron :
<?php
include_once('/var/www/vhosts/agritechtrade.com/httpdocs/parsehtml/simple_html_dom.php');
//Graph Corn
$path= '/var/www/vhosts/agritechtrade.com/httpdocs/images/stories/graph_accueil/corn.png';
$html = file_get_html('http://www.insidefutures.com/charts/index.php?sym=ZCU11&type=CANDLE&a=I:5&studies=BOLL;EXP');
$i=0;
 foreach($html->find('td#pagebody') as $a)
  foreach($a->find('img') as $element) {
       $liens[$i] = 'http://www.insidefutures.com'.$element->src;
	   $i++;
	   }
	$fp=fopen("/var/www/vhosts/agritechtrade.com/httpdocs/images/stories/graph_accueil/essai.txt", "w"); //ouverture du fichier en mode écriture, création du fichier s'il n'existe pas. 	
fwrite($fp,$liens[2]);
	fclose($fp);
unset($liens);
unset($html);

?>
Le script dans la barre d'adresse s’exécute en moins de 5 secondes et l'image fait environ 30 Ko .

Voici la commande Cron :
*/2 * * * * /usr/bin/php -f /var/www/vhosts/*****.com/cgi-bin/script.php

Une solution ? Une configuration de cron a faire ? Merci d'avance de votre aide !!! :wink:

Eléphant du PHP | 256 Messages

28 juil. 2011, 22:42

Bonjour,

Mais quand tu essaie d'appeler *manuellement* la tache Cron, pas le script, qu'obtiens-tu ?

De plus, où fais-tu appel à l'exécutable Php dans ta tâche ? Je pense qu'il manque une ligne comme...
#!/usr/local/bin/php5
en début de script.

Cordialement,

Gaspard

blump08
Invité n'ayant pas de compte PHPfrance

28 juil. 2011, 22:49

Merci de te pencher sur mon sujet.

J'appel php dans ma tache cron avec ceci /usr/bin/php -f. (cela fonctionne pour mes 25 autres scripts lancer par cron )

Le deuxième script et d'autre fonctionne correctement mais celui avec la fonction copy de php ne fonctionne pas avec cron. ( J'ai déjà remarqué que si une variable est trop grosse ou la par exemple l'image fait 30 ko mais script sous cron ne fonctionne pas .. )

Mais quand tu essaie d'appeler *manuellement* la tache Cron, pas le script, qu'obtiens-tu ? <== Comment ça ?

Eléphant du PHP | 256 Messages

29 juil. 2011, 12:30

Bonjour,

Hé bien, je dispose d'une distribution Gentoo chez Ovh qui me permet, depuis le planificateur, de déclencher manuellement un script Cron pour vérifier son fonctionnement.

D'un autre côté, si 25 scripts fonctionnent déjà, c'est que tu sais planifier une tâche. :)

Après, je n'ai pas d'autre idée pour t'aider à avancer. J'en suis confus.

Sinon, idée stupide, tu as mis le bon "Chmod" sur ton script ?

Cordialement,

Gaspard

blump08
Invité n'ayant pas de compte PHPfrance

29 juil. 2011, 12:52

Oui j'ai même fait un chmod +x sur mon script. Mais c'est pas la première fois que cela m'arrive. Par exemple lorsque je parse une page trop volumineuse ( donc le code d'une page est contenu dans une variable ) cela fonctionne par la barre d'adresse mais pas par Cron. La le problème vient de la fonction copy de php , l'imgage fait 30 Ko mais cron ne supporte pas j'ai l'impression.

Si je remplace copy () par une ecriture dans un fichier, cela fonctionne cron éxécute bien la tache.

N'y a t-il pas une configuration de cron à modifier ?

Cordialment