Simuler un fichier externe

TH3VenGeuR Messages postés 4 Date d'inscription lundi 25 janvier 2010 Statut Membre Dernière intervention 23 février 2011 - 22 févr. 2011 à 11:37
TH3VenGeuR Messages postés 4 Date d'inscription lundi 25 janvier 2010 Statut Membre Dernière intervention 23 février 2011 - 23 févr. 2011 à 14:15
Bonjour à tous, je viens vous demander un petit coup de main car là je suis au bout de ce que je peux imaginer.

Je travail dans une société où je suis en train de développer une page d'automatisation de requête sql. Pour se faire nous utilisons Pseudo-cron qui est une page php qui sait gérer les timers comme cron sur Linux.

Je bute sur un point essentiel : pour fonctionner ce fichier a besoin d'une page externe dans laquel les taches à éxecuter y sont spécifier avec les heures correspondante.

J'arrive bien avec un while à générer le fichier mais je souhaite qu'il soit sur la même page et non sur une page externe pour m'éviter de rajouter une page.

un peu de code si cela peut vous aider :

//
$cronTab = dirname(__FILE__)."/cronjobs/crontab.txt";

$rq = "SELECT     1, 2, 3, 4, 5, 6, 7, 8, 9
FROM         dbo.ma_table";

$result_odbc = odbc_exec($connect, $rq);
$cronTab = "
";
while(odbc_fetch_row($result_odbc)){

$ID = odbc_result($result_odbc, "1");
$REQUEST = odbc_result($result_odbc, "2");
$SECONDS = odbc_result($result_odbc, "3");
$MINUTES = odbc_result($result_odbc, "4");
$HOURS = odbc_result($result_odbc, "5");
$DAYS = odbc_result($result_odbc, "6");
$DAY_OF_WEEK = odbc_result($result_odbc, "7");
$MONTH = odbc_result($result_odbc, "8");
$EMAIL = odbc_result($result_odbc, "9");

 #mi  		 h    	   d   		m    	  dow      			job                         comment
$cronTab .= $MINUTES."\t".$HOURS."\t".$DAYS."\t".$MONTH."\t".$DAY_OF_WEEK."\t periodical_request_sql_exec.inc.php?id=".$ID."";     # make db dump every sunday at 5 am
}

4 réponses

pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
23 févr. 2011 à 09:23
Bonjour,

j'ai du mal à comprendre ce que tu appele "mais je souhaite qu'il soit sur la même page et non sur une page externe pour m'éviter de rajouter une page."?

Tu parle de rajouter des lignes au fichier php en cours d'exécution, ou tout à fait autre chose?

Cordialement,
- Pysco68
0
TH3VenGeuR Messages postés 4 Date d'inscription lundi 25 janvier 2010 Statut Membre Dernière intervention 23 février 2011
23 févr. 2011 à 12:25
Salut et merci de ta réponse,

je me suis surement mal exprimé, je ne souhaite pas qu'il rajoute des lignes dans son propre code, je souhaite qu'au lieu d'aller chercher les lignes contenu dans le while dans un fichier en externe comme le propose le script (et tout est d'ailleurs basé sur ce fichier externe), il aille chercher ce code sur sa propre page en lui faisant croire que le fichier est externe.

Je ne sais pas si c'est plus clair.

D'avance merci à vous tous.
0
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
23 févr. 2011 à 13:30
Nan pas vraimment... hmm...

Quand tu parle de "il" tu parle du script PHP?

Pour ce qui est du script que tu as posté plus haut, il ne se sert strictement pas du fichier text actuellement; tu le charges dans la variable $cronTab, variable que tu mets égale à "
" trois lignes plus loins... et je ne vois aucun endroit où tu lis le fichier...

- Pysco68
0
TH3VenGeuR Messages postés 4 Date d'inscription lundi 25 janvier 2010 Statut Membre Dernière intervention 23 février 2011
23 févr. 2011 à 14:15
en faite la toutes première lignes est commenté, c'est une erreur de mise en page.

voilà la fin du code ou tu peux retrouver le fichier en lecture :

function parseCronFile($cronTabFile) {
GLOBAL $debug;
$file = file($cronTabFile);
$job = Array();
$jobs = Array();
for ($i=0;$i<count($file);$i++) {
if ($file[$i][0]!='#') {
//			old regex, without dow abbreviations:
//			if (preg_match("~^([-0-9,/*]+)\\s+([-0-9,/*]+)\\s+([-0-9,/*]+)\\s+([-0-9,/*]+)\\s+([-0-7,/*]+|Sun|Mon|Tue|Wen|Thu|Fri|Sat)\\s+([^#]*)(#.*)?$~i",$file[$i],$job)) {
if (preg_match("~^([-0-9,/*]+)\\s+([-0-9,/*]+)\\s+([-0-9,/*]+)\\s+([-0-9,/*]+)\\s+([-0-7,/*]+|(-|/|Sun|Mon|Tue|Wed|Thu|Fri|Sat)+)\\s+([^#]*)\\s*(#.*)?$~i",$file[$i],$job)) {
$jobNumber = count($jobs);
$jobs[$jobNumber] = $job;
if ($jobs[$jobNumber][PC_DOW][0]!='*' AND !is_numeric($jobs[$jobNumber][PC_DOW])) {
$jobs[$jobNumber][PC_DOW] = str_replace(
Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat"),
Array(0,1,2,3,4,5,6),
$jobs[$jobNumber][PC_DOW]);
}
$jobs[$jobNumber][PC_CMD] = trim($job[PC_CMD]);
$jobs[$jobNumber][PC_COMMENT] = trim(substr($job[PC_COMMENT],1));
$jobs[$jobNumber][PC_CRONLINE] = $file[$i];
}
$jobfile = getJobFileName($jobs[$jobNumber][PC_CMD]);

$jobs[$jobNumber]["lastActual"] = getLastActualRunTime($jobs[$jobNumber][PC_CMD]);
$jobs[$jobNumber]["lastScheduled"] = getLastScheduledRunTime($jobs[$jobNumber]);
}
}

multisort($jobs, "lastScheduled");

if ($debug) var_dump($jobs);
return $jobs;
}

if ($debug) echo "";

$jobs = parseCronFile($cronTab);
0
Rejoignez-nous