Changeset 84521 in spip-zone


Ignore:
Timestamp:
Sep 8, 2014, 12:25:19 PM (5 years ago)
Author:
teddy.spip@…
Message:
  • On va se calmer sur les requêtes faites au serveur SQL, on passe par sql_insertq_multi

Mais là, on rencontre une limite : max_allowed_packet. Il faudra trouver une solution rapidement.

  • On échappe toutes les valeurs textuelles pour ne pas avoir de 'soucis'.
  • Up de z
Location:
_plugins_/rss_commits/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/rss_commits/trunk/genie/import_commits.php

    r84479 r84521  
    66function genie_import_commits_dist ($t)
    77{
    8 
     8    $log = array();
     9    $log[] = "\n ----------" . date_format(date_create(), 'Y-m-d H:i:s') . ' : on lance ' . __FUNCTION__ ;
     10    $commits_anciens = array();
     11    $commits_nouveaux = array();
     12    $commits_en_bdd   = sql_allfetsel('id_projet,url_revision', 'spip_commits', "url_revision !=''");
     13    if (count($commits_en_bdd) > 0) {
     14        foreach ($commits_en_bdd as $key => $value) {
     15            $commits_anciens[] = $value['id_projet'] . '|' . $value['url_revision'];
     16        }
     17    }
    918    $commits = lister_rss_commits();
    1019    if (count($commits) > 0) {
    1120        foreach ($commits as $key => $value) {
    12             if (!$commit_enregistre = sql_fetsel(
    13                 '*',
    14                 'spip_commits',
    15                 'id_projet='
    16                 . $value['id_projet']
    17                 . ' AND url_revision="'
    18                 . $value['url_revision']
    19                 . '"'
    20             )) {
    21                 // On nettoie un peu le texte de tout espace indésirable dùu au CDATA.
    22                 $value['texte'] = trim($value['texte']);
    23                 $id_commit = sql_insertq('spip_commits', $value);
     21            if (!in_array($value['id_projet'] . '|' . $value['url_revision'], $commits_anciens)) {
     22                // On stocke dans le tableau, les nouveaux commits qui doivent être ajoutés en BDD.
     23                $commits_nouveaux[] = $value;
     24                $log[] = 'Le commit ' . $value['url_revision'] . ' va être enregistré pour le projet n#' . $value['id_projet'];
     25            } else {
     26                $log[] = 'Le commit ' . $value['url_revision'] . ' est déjà enregistré pour le projet n#' . $value['id_projet'];
    2427            }
    2528        }
     29        // On insère par lot les nouveaux commits pour éviter un débordement de mémoire
     30        // cf. http://programmer.spip.net/sql_insertq_multi,591
     31        if (count($commits_nouveaux) > 0) {
     32            sql_insertq_multi('spip_commits', $commits_nouveaux);
     33        } else {
     34            $log[] = 'Pas d\'ajout de nouveaux commits dans la BDD';
     35        }
     36    } else {
     37        $log[] = 'Il n\'y a pas de nouveaux commits';
    2638    }
     39    $log[] = date_format(date_create(), 'Y-m-d H:i:s') . ' : ' . __FUNCTION__ . ' a fini son travail' . "\n ----------";
     40
     41    spip_log(implode("\n", $log), 'rss_commits');
    2742}
    2843?>
  • _plugins_/rss_commits/trunk/paquet.xml

    r84487 r84521  
    22        prefix="rss_commits"
    33        categorie="divers"
    4         version="0.4.2"
     4        version="0.4.3"
    55        etat="dev"
    66        compatibilite="[3.0.8;3.0.*]"
  • _plugins_/rss_commits/trunk/rss_commits_fonctions.php

    r84483 r84521  
    2929            if (count($contenu_rss) > 0) {
    3030                foreach ($contenu_rss['channel']['item'] as $key => $value) {
    31                         $items[$key]['titre'] = $value['title'];
    32                         $items[$key]['descriptif'] = $value['description'];
    33                         $items[$key]['texte'] = trim($value['texte']);
    34                         $value['author'] = echapper_tags($value['author']);
    35                         $items[$key]['auteur'] = $value['author'];
    36                         $items[$key]['url_revision'] = $value['link'];
    37                         $items[$key]['guid'] = $value['guid'];
    38                         $items[$key]['id_projet'] = $value_rss['id_projet'];
     31                        $items[$key]['titre']         = echapper_tags($value['title']);
     32                        $items[$key]['descriptif']    = echapper_tags($value['description']);
     33                        $items[$key]['texte']         = echapper_tags(trim($value['texte']));
     34                        $items[$key]['auteur']        = echapper_tags($value['author']);
     35                        $items[$key]['url_revision']  = $value['link'];
     36                        $items[$key]['guid']          = $value['guid'];
     37                        $items[$key]['id_projet']     = $value_rss['id_projet'];
    3938                        $items[$key]['date_creation'] = strftime(
    4039                            "%Y-%m-%d %H:%M:%S",
Note: See TracChangeset for help on using the changeset viewer.