Annonce

  •  » Outils
  •  » créer les images en tâche de fond sur un serveur linux

#1 2013-08-09 15:53:36

jdd
Membre
Toulouse
2009-12-20
403

créer les images en tâche de fond sur un serveur linux

Bonjour,
J'ai un serveur kimsufi avec opensuse.
La création des images demandée par la nouvelle version de piwigo met mon serveur à genoux (si, par exemple, quelqu'un lance un diaporama alors que les images ne sont pas créées).

Je voudrais donc soit créer ces images d'avance, comme je faisais avec l'ancienne version, mais où les mettre? (j'utilise l'upload par ftp), soit faire une tâche de fond à basse priorité pour le serveur.

Dans les deux cas il me faut savoir où mettre ces images, et avec quel nom. Faut-il synchroniser ensuite?

merci
jdd

Hors ligne

#2 2013-08-17 07:43:09

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
16781

Re: créer les images en tâche de fond sur un serveur linux

Bonjour,

tu peux créer les taille multiple dans le gestionnaire de lot


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

Hors ligne

#3 2013-08-17 08:23:33

jdd
Membre
Toulouse
2009-12-20
403

Re: créer les images en tâche de fond sur un serveur linux

je sais, merci, mais la dernière fois que j'ai essayé ca m'a bloqué le serveur.

Ce que je voudrais c'est le faire en tâche de fond quand le serveur est inactif, avec un cronjob.

Je peux analyser le code de piwigo, mais c'est un peu hard pour moi :-(

merci
jdd

Hors ligne

#4 2013-08-18 16:45:50

Mascarille
Membre
Lyon Avignon
2009-12-21
799

Re: créer les images en tâche de fond sur un serveur linux

Bonjour,
Il faudrait chercher sur le forum anglais, un utilisateur avait écrit un batch pour pallier au temps considérable de génération des différentes tailles de vignettes lors du passage à la 2.4, (?)
J'avais regardé à l'époque car j'avais 60h de génération sur une grosse machine pour l'ensemble de mes 40 000 photos.
Finalement, j'avais travaillé autrement en dupliquant la base, traitement sur une autre machine et rechargement, je ne suis donc pas allé très loin dans cette première solution. De mémoire c'était quand même assez compliqué !

Bonne journée


Photographe spectacle vivant : www.mascarille.com
Voyages : www.mascarille.com/tdm
Base de connaissance sur le théâtre : www.mascarille.fr

Hors ligne

#5 2013-08-18 17:06:46

jdd
Membre
Toulouse
2009-12-20
403

Re: créer les images en tâche de fond sur un serveur linux

merci :-)

jdd

Hors ligne

#6 2013-08-25 16:39:31

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12639

Re: créer les images en tâche de fond sur un serveur linux

Pour moi la bonne méthode c'est de passer par l'API web (ws.php) avec un script. On peut lui demander quelles sont les "dérivées manquantes". J'avais codé ça pour le passage vers Piwigo 2.4 sur Piwigo.com:

Code:

    # preload the derivative cache
    if (not defined $opt{'no-cache'} and $row->{customer_status} ne 'suspended' and $gallery_locked ne 'true') {
        build_cache('medium');
        build_cache('thumb');
        build_cache('square');
    }
    
sub build_cache {
    my ($type) = @_;

    our ($ua, $base_url);

    my $response = $ua->post(
        $base_url.'/ws.php?format=json',
        {
            method => 'pwg.getMissingDerivatives',
            types => $type,
            max_urls => 100_000
        }
    );

    my $result = from_json($response->content)->{result};

    if (ref($result) ne 'HASH' or not defined $result->{urls}) {
        return;
    }

    my @urls = @{ $result->{urls} };
    print scalar(@urls).' '.$type.' images to build'."\n";

    use Time::HiRes qw/gettimeofday tv_interval/;

    my $i = 0;

    foreach my $url (@urls) {
        my $t1 = [gettimeofday];

        printf(
            '[%s] photo %s %0'.length(scalar(@urls)).'u/%u generation in progress... ',
            $url, # $row->{username},
            $type,
            ++$i,
            scalar(@urls)
        );

        $ua->get($url.'&ajaxload=true');

        my $elapsed = tv_interval($t1);
        printf('%u ms', $elapsed * 1000);
        print "\n";
    }
}

(voir tools/piwigo_remote.pl pour l'initialisation de $ua le User Agent)


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

  •  » Outils
  •  » créer les images en tâche de fond sur un serveur linux

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact