par
josse34 » 10 oct. 2013, 16:51
essaies de regarder les logs apache, que donnent-t-ils?
.
[Thu Oct 10 16:42:13 2013] [warn] [client XX.XXX.XX.XX] mod_fcgid: stderr: PHP Fatal error: Call to undefined method DirectoryIterator::getExtension() in /home/monsite/public_html/moncode.php on line 12
Ligne 12, c'est if (!$fileinfo->isDot() && $fileinfo->isFile() && $fileinfo->getExtension() == 'data') {
Voici mon code issue de ce topic :
php-debutant/parser-repertoire-fichiers ... 12-15.html
et voici le dossier AVANT avec les fichiers .data :
AVANT.zip
<?php
try {
// connexion
$pdo = new PDO('mysql:host=localhost;dbname=MABASE', 'MATABLE', 'MONPASSWORD');
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_OBJ);
$pdo->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(\PDO::ATTR_CASE, \PDO::CASE_LOWER);
$dir = new DirectoryIterator(dirname(__FILE__) . '/AVANT');
foreach ($dir as $fileinfo) {
if (!$fileinfo->isDot() && $fileinfo->isFile() && $fileinfo->getExtension() == 'data') {
echo 'parse du fichier : '.$fileinfo->getFilename().'<br />';
$tabFile = file($fileinfo->getPathname());
preg_match('/^fic(\d+)-(\d+)-(\d+)-(\d+).data$/',$fileinfo->getFilename(),$match);
$table = $match[1];
$pdo->query("CREATE TABLE IF NOT EXISTS `$table` (dtlog INT PRIMARY KEY, glot INT);");
$stmt = $pdo->prepare('INSERT INTO `'.$table.'` (dtlog, glot) VALUES (str_to_date(:dt,\'%Y%m%d\'),:glot) ON DUPLICATE KEY UPDATE glot = VALUES(glot)');
if (count($tabFile) > 0) {
unset($tabFile[0]);
$i = 0;
foreach ($tabFile as $line) {
$csv = str_getcsv($line, ';');
$stmt->bindValue(':dt', $csv[1]);
$stmt->bindValue(':glot', $csv[2], PDO::PARAM_INT);
$stmt->execute();
echo 'insertion de la ligne '.$i.'<br />';
$i++;
}
}
}
}
} catch (Exception $e) {
echo $e->getMessage() . '<br />' . $e->getTraceAsString();
$to = 'MONMAIL';
$subject = 'ALERTE';
$msg = 'Attention : '.$e->getMessage().' '.$e->getTraceAsString().'';
mail($to, $subject, $msg);
}
Merci!!!
[quote="yann18"]essaies de regarder les logs apache, que donnent-t-ils?
.[/quote]
[quote]
[Thu Oct 10 16:42:13 2013] [warn] [client XX.XXX.XX.XX] mod_fcgid: stderr: PHP Fatal error: Call to undefined method DirectoryIterator::getExtension() in /home/monsite/public_html/moncode.php on line 12
[/quote]
Ligne 12, c'est if (!$fileinfo->isDot() && $fileinfo->isFile() && $fileinfo->getExtension() == 'data') {
Voici mon code issue de ce topic : http://forum.phpfrance.com/php-debutant/parser-repertoire-fichiers-data-pour-integration-mysql-t269212-15.html
et voici le dossier AVANT avec les fichiers .data : [attachment=0]AVANT.zip[/attachment]
[php]
<?php
try {
// connexion
$pdo = new PDO('mysql:host=localhost;dbname=MABASE', 'MATABLE', 'MONPASSWORD');
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_OBJ);
$pdo->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(\PDO::ATTR_CASE, \PDO::CASE_LOWER);
$dir = new DirectoryIterator(dirname(__FILE__) . '/AVANT');
foreach ($dir as $fileinfo) {
if (!$fileinfo->isDot() && $fileinfo->isFile() && $fileinfo->getExtension() == 'data') {
echo 'parse du fichier : '.$fileinfo->getFilename().'<br />';
$tabFile = file($fileinfo->getPathname());
preg_match('/^fic(\d+)-(\d+)-(\d+)-(\d+).data$/',$fileinfo->getFilename(),$match);
$table = $match[1];
$pdo->query("CREATE TABLE IF NOT EXISTS `$table` (dtlog INT PRIMARY KEY, glot INT);");
$stmt = $pdo->prepare('INSERT INTO `'.$table.'` (dtlog, glot) VALUES (str_to_date(:dt,\'%Y%m%d\'),:glot) ON DUPLICATE KEY UPDATE glot = VALUES(glot)');
if (count($tabFile) > 0) {
unset($tabFile[0]);
$i = 0;
foreach ($tabFile as $line) {
$csv = str_getcsv($line, ';');
$stmt->bindValue(':dt', $csv[1]);
$stmt->bindValue(':glot', $csv[2], PDO::PARAM_INT);
$stmt->execute();
echo 'insertion de la ligne '.$i.'<br />';
$i++;
}
}
}
}
} catch (Exception $e) {
echo $e->getMessage() . '<br />' . $e->getTraceAsString();
$to = 'MONMAIL';
$subject = 'ALERTE';
$msg = 'Attention : '.$e->getMessage().' '.$e->getTraceAsString().'';
mail($to, $subject, $msg);
}
[/php]
Merci!!!