%PDF- %PDF-
Direktori : /home/devcapijob/www/clients/ |
Current File : /home/devcapijob/www/clients/neuvoo.php |
<?php define('PATH_BASE',dirname(__DIR__) ); define( 'DS', DIRECTORY_SEPARATOR ); require_once ( PATH_BASE .DS.'clients'.DS.'db.php' ); error_reporting(E_ALL); ini_set('display_errors',0); if($_GET['action']=="delete"){ //echo 'qsqs';exit; $select_annonce ="select id_annonce from cap_annonce WHERE id_annonceur = 515082"; $execute_select_annonce = $conn->query($select_annonce); $array =array(); while ($del = $execute_select_annonce->fetch()){ echo $i; array_push($array, $del['id_annonce']); $i++; } $ids = implode(',', $array); $delete_annonce_departement = "DELETE FROM cap_annonce_departement WHERE id_annonce in (".$ids.")"; $conn->query($delete_annonce_departement); $delete_annonce_domaine = "DELETE FROM cap_annonce_domaine WHERE id_annonce in (".$ids.")"; $conn->query($delete_annonce_domaine); $delete_annonce_email_sup = "DELETE FROM cap_annonce_email_sup WHERE id_annonce in (".$ids.")"; $conn->query($delete_annonce_email_sup); $conn->query("DELETE FROM cap_annonce_site WHERE id_annonce in (".$ids.")"); $delete_annonce = "DELETE FROM cap_annonce WHERE id_annonce in (".$ids.")"; $conn->query($delete_annonce); echo 'ok--'; exit; } $select_annonceur =$conn->query("select email,raison_social from cap_annonceur WHERE id_annonceur = 515082"); $data = $select_annonceur->fetch(); $email = $data['email']; $raison_social = $data['raison_social']; /*****/ $last_id_table = "select max(id_annonce) from cap_annonce"; $requete_last_id = $conn->query($last_id_table); $last_id=$requete_last_id->fetch(); /***/ ////https://neuvoo.com/services/feeds/generatesV3/generate.php?partner=capijob&country=fr //echo PATH_BASE .DS.'clients'.DS.'neuvoo.xml';exit; // Affichage des erreurs pour le débogage ini_set('display_errors', 1); error_reporting(E_ALL); // Ouvrir le flux XML avec XMLReader pour éviter de charger tout le fichier en mémoire $reader = new XMLReader(); if (!$reader->open('/home/capijobnew/public_html/clients/capijob_bulk.xml')) { die("Impossible d'ouvrir le flux XML"); } // Afficher la mémoire utilisée après ouverture du flux XML echo 'Mémoire utilisée après ouverture du flux: ' . memory_get_usage() . ' bytes'; // Paramètres pour le traitement par lots $batch_size = 10000; // Taille du lot pour les opérations SQL $batch_count = 0; // Compteur pour le nombre d'enregistrements dans le lot $max_length = 255; // Tableaux pour stocker les requêtes $reqs = []; $reqs_content = []; $sites = []; $sql_depart = []; $sql_domaine = []; $email_sup = []; $i=1; // Parcourir le flux XML et traiter les éléments "job" while ($reader->read()) { if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'job') { $xmlJob = simplexml_load_string($reader->readOuterXML()); if ($xmlJob === false) { echo "Erreur lors du chargement du XML"; continue; // Passez à l'itération suivante } // Récupérer les données nécessaires $jobid = $xmlJob->jobid ?? null; $title = $xmlJob->title ?? null; $company = $xmlJob->company ?? null; $region = trim($xmlJob->state ?? ''); $description = utf8_decode(addslashes($xmlJob->description)) ?? ''; $value_domaine['id_domaine'] ='1682'; // S'assurer que les données essentielles sont présentes if ($jobid === null || $title === null || $company === null) { continue; // Passer si des données critiques sont manquantes } // Récupérer des informations de base de données $regionsQuery = $conn->prepare( 'SELECT cap_region.id_region FROM cap_region_new INNER JOIN cap_region ON cap_region_new.id_region_new = cap_region.parent_new WHERE cap_region_new.nom_reg_new LIKE ?' ); $regionsQuery->execute(['%' . $region . '%']); $regionData = $regionsQuery->fetch(); $id_region = $regionData['id_region'] ?? '89'; // Valeur par défaut // Obtenir les départements pour la région $departements = []; $departQuery = $conn->prepare("SELECT id_departement FROM cap_depart WHERE id_region = ?"); $departQuery->execute([$id_region]); while ($departRow = $departQuery->fetch(PDO::FETCH_ASSOC)) { $departements[] = $departRow['id_departement']; } $id_last = $last_id['max(id_annonce)'] + $i; $DateFin ='2024-12-30'; // Construire les requêtes pour insertion echo $reqs[] = sprintf( '("%d", "1", "%d", "%d", "%s", "7", "13","", "nc", "%s", "%s", "%s", "515082", "75", "12", "12", "7", "0", "21", "1", "1", "0", "%s", "%s", "1", "0", "0", "0", "0")', $id_last, 1682, $id_region, implode(',', $departements), date('Y-m-d'), $DateFin, $DateFin, date('Y-m-d'), date('Y-m-d H:i:s') ); if (strlen($title) > $max_length) { $shortened_poste = substr($title, 0, $max_length); } else { $shortened_poste = $title; } echo $reqs_content[] = sprintf( '("%d", "%s", "%s", "%s", "%s", "%s", "", "", "", "", "", "")', $id_last, addslashes(utf8_decode($shortened_poste)), addslashes(utf8_decode($shortened_poste)), addslashes(utf8_decode($shortened_poste)), genere_alias($id_last."-".trim(substr($shortened_poste, 0, 100))), $description // Description du poste ou autre texte ); // Requêtes pour `cap_annonce_site` $sites[] = sprintf("('1', '%d')", $id_last); $sites[] = sprintf("('3', '%d')", $id_last); // Requêtes pour les départements foreach ($departements as $deptId) { $sql_depart[] = sprintf("(%d, %d)", $id_last, $deptId); } if($value_domaine['id_domaine']!=""){ $sql_domaine[] = "(".$id_last.", ".$value_domaine['id_domaine'].")"; } $sql_email[] ="('".$id_last."', 'cv1@capijob.com')"; // Autres requêtes nécessaires // Requêtes pour domaines, emails supplémentaires, etc. // Traiter par lots if ($batch_count >= $batch_size) { try { $conn->beginTransaction(); // Démarrer une transaction // Insertion des requêtes SQL en lot if (!empty($reqs)) { $insertCapAnnonce = 'INSERT INTO `cap_annonce`(`id_annonce`, `type`, `domaine`, `region`, `depart`, `duree_travail`, `niveau_etude`, `type_contrat`, `permis`, `date_parution`, `fin_parution`, `date_max_parution`, `id_annonceur`, `id_pays`, `parution`, `parution_utilise`, `nb_rafraich`, `nb_rafraich_historique`, `par_jour`, `nb_rubrique`, `etat`, `active`, `date_creation`, `date_misejour`, `id_langue`, `select_accueil`, `flux`, `nb_vue`, `click_btn`) VALUES ' . implode(',', $reqs); $conn->exec($insertCapAnnonce); $reqs = []; // Réinitialiser après insertion } // Insertion du contenu des annonces if (!empty($reqs_content)) { $insertContent = 'INSERT INTO `cap_annonce_content`(`id_annonce`, `poste`, `titre`, `h1_page`, `alias`, `texte`, `salaire`, `ville`, `code_postal`, `adresse`, `autre_mail`, `url_candidature`) VALUES ' . implode(',', $reqs_content); $conn->exec($insertContent); $reqs_content = []; // Réinitialiser après insertion } // Insertion des sites if (!empty($sites)) { $insertSite = 'INSERT INTO `cap_annonce_site`(`site_web`, `id_annonce`) VALUES ' . implode(',', $sites); $conn->exec($insertSite); $sites = []; // Réinitialiser après insertion } // Insertion des départements if (!empty($sql_depart)) { $insertDepart = 'INSERT INTO `cap_annonce_departement`(`id_annonce`, `id_departement`) VALUES ' . implode(',', $sql_depart); $conn->exec($insertDepart); $sql_depart = []; // Réinitialiser après insertion } if (!empty($sql_domaine)) { $insertdomaine = 'INSERT INTO `cap_annonce_domaine`(`id_annonce`, `id_domaine`) VALUES ' . implode(',', $sql_domaine); $conn->exec($insertdomaine); $sql_domaine = []; // Réinitialiser après insertion } if (!empty($sql_email)) { $insertemail = 'INSERT INTO `cap_annonce_email_sup`(`id_annonce`, `email_sup`) VALUES ' . implode(',', $sql_email); $conn->exec($insertemail); $sql_email = []; // Réinitialiser après insertion } $conn->commit(); // Confirmer la transaction $batch_count = 0; // Réinitialiser le compteur du lot } catch (PDOException $e) { $conn->rollback(); // Rétablir la transaction en cas d'échec die('Erreur lors de l\'exécution des requêtes : ' . $e->getMessage()); } } // Incrémentez le compteur $batch_count++; $i++; } } // Insertion finale si des éléments restent if ($batch_count > 0) { try { $conn->beginTransaction(); // Démarrer une transaction if (!empty($reqs)) { $insertCapAnnonce = 'INSERT INTO `cap_annonce`(`id_annonce`, `type`, `domaine`, `region`, `depart`, `duree_travail`, `niveau_etude`, `type_contrat`, `permis`, `date_parution`, `fin_parution`, `date_max_parution`, `id_annonceur`, `id_pays`, `parution`, `parution_utilise`, `nb_rafraich`, `nb_rubrique`, `etat`, `active`, `date_creation`, `date_misejour`, `id_langue`, `select_accueil`, `flux`, `nb_vue`, `click_btn`) VALUES ' . implode(',', $reqs); $conn->exec($insertCapAnnonce); } if (!empty($reqs_content)) { $insertContent = 'INSERT INTO `cap_annonce_content`(`id_annonce`, `poste`, `titre`, `h1_page`, `alias`, `texte`, `salaire`, `ville`, `code_postal`, `adresse`, `autre_mail`, `url_candidature`) VALUES ' . implode(',', $reqs_content); $conn->exec($insertContent); } $insertSite = "INSERT INTO `cap_annonce_site`(`site_web`, `id_annonce`) VALUES " . implode(',', $sites); $conn->exec($insertSite); $insertDepart = "INSERT INTO `cap_annonce_departement`(`id_annonce`, `id_departement`) VALUES " . implode(',', $sql_depart); $conn->exec($insertDepart); $insertdomaine ="INSERT INTO `cap_annonce_domaine`(`id_annonce`, `id_domaine`) VALUES " . implode(',', $sql_domaine); $conn->exec($insertdomaine); $insertemail = "INSERT INTO `cap_annonce_email_sup`(`id_annonce`, `email_sup`) VALUES " . implode(',', $sql_email); $conn->exec($insertemail); // D'autres opérations SQL similaires pour les sites, les départements, etc. $conn->commit(); // Confirmer la transaction } catch (PDOException $e) { $conn->rollback(); // Rétablir la transaction en cas d'échec die('Erreur lors de l\'exécution des requêtes : ' . $e->getMessage()); } } // Fermer le lecteur XML $reader->close(); echo 'Toutes les opérations ont été exécutées avec succès'; // Afficher la mémoire utilisée après les opérations echo 'Mémoire utilisée après les opérations : ' . memory_get_usage() . ' bytes'; ?> ?>