J'ai retenter disons pas à pas avec votre code.
Je ne pense pas que l'erreur vienne de votre code mais plutôt de la complexité de mes PHP à exécuter.
Alors résumons le tout:
Je dois donc partir d'une page html/php comprenant un formulaire de type:
<form action="what.php" method="post" enctype="multipart/form-data">
Formulaire d'envoi de fichier :
LKB
Logit
Poisson
Kallman
Schul
Parallel
</form>
Ce formulaire appelerais donc un PHP qui suivant que une ou plusieurs checkbox aient été coché ben appelerais la fonction correspondante à la/les checkbox cochées.
je vous affiche le PHP du LKB: (les autres sont similaires)
Traitement en cours : 0%
<?php
$out = array();
$dirDest = dirname(__FILE__)."/";
$datefile = date("YmdHis");
$fileDest = "file_".$datefile.".csv";
if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
echo "
Le déplacement du fichier temporaire a échoué.
";
echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
}
} else {
echo "Le fichier n'a pas été uploadé";
}
exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./LKB.R > ./out_'.$datefile.'.txt 2>/dev/null &', $out);
?>
<script type="application/javascript">
var file_out="<?php echo "out_$datefile.txt";?>"
</script>
<script type="application/javascript" src="NTCP.js"></script>
Après ben ça se complique méchamment:
Comme on peut le voir, chaque PHP correspondant à chaque checkbox fait appel à un programme R ( pas nécessaire de mettre le code ici car pas utile ), et un javascript qui est le même pour chaque checkbox et un autre php à travers le javascript ...
Voici le javascript:
window.onload = function() {
envoi("file_out="+file_out,"check.php");
}
function envoi(req,page) {
var xhr_object = null;
if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);
xhr_object.open("POST", page, true);
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
xhr_object.send(req);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) { retour(xhr_object.responseXML);}
}
}
function retour(docXml) {
chargement(docXml);
}
function chargement(docXml) {
var progression = docXml.getElementsByTagName('progression');
var progress = 0;
if (progression.length) {
progress = progression[0].getAttribute('value');
span = document.getElementById("progress");
span.innerHTML = progress;
}
var rows = docXml.getElementsByTagName('ligne');
if (rows.length) {
tbody = document.getElementById("result_body");
tbody.innerHTML = "";
for(var row=0;row<rows.length;row++) {
var tr = document.createElement("tr");
row_values = rows[row].getAttribute("value");
var columns = row_values.split(";");
for( column in columns) {
var td = document.createElement("td");
td.innerHTML = columns[column];
tr.appendChild(td);
}
tbody.appendChild(tr);
}
}
var loglikelihood = docXml.getElementsByTagName('loglikelihood');
if (loglikelihood.length) {
var lllh = loglikelihood[0].getAttribute('value');
span = document.getElementById("lllh");
span.innerHTML "-log-likelihood "+lllh;
}
if (progress < 100) {
window.setTimeout(function(a,b){ return function(){envoi(a,b);};}("file_out="+file_out,"check.php"),5000);
}
}
le check.php:
<?php
header("Pragma: no-cache");
header("Expires: 0");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Content-type: application/xml");
echo('<?xml version="1.0" encoding="utf-8" ?>');
$progression = 0;
$reste = "";
$loglikelihood = "";
if ($_POST) {
if (!empty($_POST['file_out'])) {
echo('<NTCP>');
if (($handle = fopen($_POST['file_out'], "r")) !== FALSE) {
//if (($handle = fopen("out.txt", "r")) !== FALSE) {
while ($data = fgets($handle)) {
if ( preg_match("/itermax=(\d*),/",$data,$matches) ) {
//print_r($matches);
$itermax=$matches[1];
} else if ( preg_match("/TRUE/",$data,$matches) ) {
//ne rien faire est parfois utile
} else if (substr($data,0,1) != ">") {
if ( preg_match ("/Iteration: (\d*) /", $data, $matches) ) {
//echo $data;
$progression = $matches[1]/$itermax*100;
} else {
if ( preg_match ("/-log-likelihood = (\d*\.\d*)/", $data, $matches) ) {
$loglikelihood = $matches[1];
} else {
$data = rtrim($data);
$keywords = preg_split("/ +/",$data);
if ( preg_match ("/Std/", $data) ) {
$keywords[0] = $keywords[0]." ".$keywords[1];
unset($keywords[1]);
}
$reste .= "<ligne value='".implode(";",$keywords);
$reste .= "'/>";
}
}
}
}
fclose($handle);
echo "";
echo "<resultat>".$reste."</resultat>";
echo "<loglikelihood value='$loglikelihood'/>";
} else {
echo('<error />');
}
echo('</NTCP>');
if ($progression >= 100) {
unlink($_POST['file_out']);
}
} else {
echo '<NTCP><error value="fichier inexistant"/></NTCP>';
}
}
?>
Voilà c'est assez violent au bout du compte ...
j'ai essayer un truc comme ça pour vous donner une idée mais je comprend pas d'où le pourquoi du comment ça veut pas marcher ...
<html>
Traitement en cours : 0%
<?php
function LKB(){
echo 'LKB:
';
$LKB = array();
$dirDest = dirname(__FILE__)."/";
$datefile = date("YmdHis");
$fileDest = "file_".$datefile.".csv";
if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
echo "
Le déplacement du fichier temporaire a échoué.
";
echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
}
} else {
echo "Le fichier n'a pas été uploadé. ";
}
exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./LKB.R > ./LKB_'.$datefile.'.txt 2>/dev/null &', $LKB);
}
function Logit(){
echo 'Logit:
';
$Logit = array();
$dirDest = dirname(__FILE__)."/";
$datefile = date("YmdHis");
$fileDest = "file_".$datefile.".csv";
if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
echo "
Le déplacement du fichier temporaire a échoué.
";
echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
}
} else {
echo "Le fichier n'a pas été uploadé. ";
}
exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./Logit.R > ./logit_'.$datefile.'.txt 2>/dev/null &', $Logit);
}
function Poisson(){
echo 'Poisson:
';
$Poisson = array();
$dirDest = dirname(__FILE__)."/";
$datefile = date("YmdHis");
$fileDest = "file_".$datefile.".csv";
if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
echo "
Le déplacement du fichier temporaire a échoué.
";
echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
}
} else {
echo "Le fichier n'a pas été uploadé. ";
}
exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./Poisson.R > ./Poisson_'.$datefile.'.txt 2>/dev/null &', $Poisson);
}
function Kallman(){
echo 'Kallman:
';
$kallman = array();
$dirDest = dirname(__FILE__)."/";
$datefile = date("YmdHis");
$fileDest = "file_".$datefile.".csv";
if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
echo "
Le déplacement du fichier temporaire a échoué.
";
echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
}
} else {
echo "Le fichier n'a pas été uploadé. ";
}
exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./Kallman.R > ./kallman_'.$datefile.'.txt 2>/dev/null &', $kallman);
}
function Schul(){
echo 'Schul:
';
$Schul = array();
$dirDest = dirname(__FILE__)."/";
$datefile = date("YmdHis");
$fileDest = "file_".$datefile.".csv";
if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
echo "
Le déplacement du fichier temporaire a échoué.
";
echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
}
} else {
echo "Le fichier n'a pas été uploadé. ";
}
exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./Schul.R > ./Schul_'.$datefile.'.txt 2>/dev/null &', $Schul);
}
function Parallel(){
echo 'Parallel:
';
$Parallel = array();
$dirDest = dirname(__FILE__)."/";
$datefile = date("YmdHis");
$fileDest = "file_".$datefile.".csv";
if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
echo "
Le déplacement du fichier temporaire a échoué.
";
echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
}
} else {
echo "Le fichier n'a pas été uploadé. ";
}
exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./Parallel.R > ./Parallel_'.$datefile.'.txt 2>/dev/null &', $Parallel);
}
if(isset($_POST['LKB']) && $_POST['LKB']==='LKB'){
LKB();
}else{
}
if(isset($_POST['Logit']) && $_POST['Logit']==='Logit'){
Logit();
}else{
}
if(isset($_POST['Poisson']) && $_POST['Poisson']==='Poisson'){
Poisson();
}else{
}
if(isset($_POST['Kallman']) && $_POST['Kallman']==='Kallman'){
Kallman();
}
if(isset($_POST['Schul']) && $_POST['Schul']==='Schul'){
Schul();
}else{
}
if(isset($_POST['Parallel']) && $_POST['Parallel']==='Parallel'){
Parallel();
}else{
}
?>
<script type="application/javascript">
var file_out="<?php echo "LKB_$datefile.txt";?>"
var file_out="<?php echo "Logit_$datefile.txt";?>"
var file_out="<?php echo "Poisson_$datefile.txt";?>"
var file_out="<?php echo "Kallman_$datefile.txt";?>"
var file_out="<?php echo "Schul_$datefile.txt";?>"
var file_out="<?php echo "Parallel_$datefile.txt";?>"
</script>
<script type="application/javascript" src="NTCP.js"></script>
</html>