Le Hollandais Volant

Bloquer c’est voler ? Publicité c’est violer.

Jeudi 19 juin 2014

Ce matin, une fausse affiche a circulé sur les réseaux :



L’affiche est une fausse, on est d’accord.

Mais quand on voit des dizaines de sites web nous supplier de retirer les bloqueurs de publicité, je me dit qu’on n’est pas bien loin du réalisme.
J’ai déjà proposé qu’on reformule ces petits messages de malvenue anti-anti-pub, laissez-moi proposer un texte alternatif à ce qui est visible sur cette affiche :

Publiciter, c’est violer.
Violez-vous la vie privée des internautes sans le savoir ?
Afficher ou diffuser de la publicité sur internet entraîne une une violation de la vie privée considérable pour les internautes honnêtes et vos visiteurs qui vous font vivre.


Explications quand même : la publicité sur internet ce sont avant tout de gros annonceurs, comme Google. Ces annonceurs détectent exactement qui clique sur les publicités, qui visite la page (même sans cliquer) et profilent les visiteurs à travers leur présence sur de nombreux sites (Google possède plein d’autres moyens que juste la publicité, par exemple).

Même chose avec tous les boutons « Like » ou « Tweet » de Facebook et Twitter. Le problème est tel qu’après quelques mois, une personne qui ne s’est jamais inscrite sur Facebook et qui veut le faire a déjà un profil complété et précis : tout y est concernant vos habitudes de navigateur, vos logiciels, votre famille (vous achetez un biberon sur eBay ? Facebook sait que vous avez un nouveau bébé), votre travail, vos habitudes de vie, vos vacances… Facebook ou Twitter vendent alors ces informations aux annonceurs pour proposer des publicités ciblés (si vous recherchez « mon ordinateur est vieux et rame », vous aurez des pubs pour des ordinateurs, vous poussant à dépenser votre argent inutilement, alors qu’une simple défragmentation de disque suffirait à redonner vie à votre ordinateur).

Ce genre des choses n’est possible qu’avec l’aide des sites internets qui utilisent ces boutons « Like », « Tweet », la publicité et plein d’autre chose (jQuery et fonts hébergés chez Google, lecteurs vidéo intégrés, Discus, Analytics…).

Voilà la raison pour laquelle j’essaye au maximum de bloquer les publicités, les cookies, les scripts externes sur les sites web et que j’encourage tout le monde de le faire. Un site n’a pas à faire le travail des services de renseignement.

Comment je fais mes lignes de dégradé en bas de la page de mon site sans images ?

Dimanche 15 juin 2014

On m’a demandé où était l’image pour faire la petite ligne de dégradé en bas de la page de mon site :

la ligne de dégradé en CSS en bas de la page de mon site

Il n’y a ni images, ni script, juste une ligne de CSS.

En fait, je mélange ici deux choses désormais largement supportés par les navigateurs :

  • les images multiples
  • les dégradés linear-gradient()

Le principe est le suivant : un dégradé, au niveau du navigateur se comporte comme une image de fond. On peut donc en mettre plusieurs et les décaler les un des autres :

background: linear-gradient(to right, transparent, red), linear-gradient(to right, blue, transparent);

Se comportera (presque) comme :

background: linear-gradient(to right, blue, red);


Après, les images sont décalées avec background-position.
C’est de là que vient mon astuce : il suffit de mettre un premier dégradé (la ligne noire), un deuxième (la ligne blanche) décalée de 1px vers le bas, et un troisième faux dégradé monochrome décalé de deux pixels vers le bas. Le faux dégradé n’a qu’une seule couleur, celle du fond du reste de la page.

Pour résumer, ça fait ça (où le rouge-bordeaux est en fait la couleur de fond du reste de la page, ne laissant alors apparaître que les deux lignes bleue et noire) :
images déclalé en CSS
Il suffit alors de remplacer les couleurs pleines par des dégradés avec 3 couleurs (le transparent sur le côté, une couleur pleine au centre).

Note importante quand même : dans la liste des 3 dégradés de fonds, c’est le premier qui est placé au dessus, les autres sont placés en dessous. Sur mon exemple ci-dessus, il faudra donc déclarer le rouge-bordeaux d’abord, le bleu ensuite et le noir en dernier.

Concernant la ligne de dégradé sur mon site, le code est là :

background: linear-gradient(to right, #212121, #212121) 0 2px no-repeat, linear-gradient(to right, #212121, #646464, #212121 ) 0 1px no-repeat, linear-gradient(to right, #212121, #010101, #212121 ) 0 0px no-repeat;

Remarquez que le premier dégradé est celui qui est unicolore et au-dessus, le second est le blanc et en dernier est la petite ligne noire du haut.

GNU/Linux : améliorer le terminal

Dimanche 15 juin 2014

Sous GNU/Linux, le terminal est un programme central pour les utilisateurs, pour sa rapidité et sa simplicité. Il peut donc être intéressant de le personnaliser et de l’améliorer un peu.

Ces astuces ici sont pratiquement toutes inspirées de ce qui se fait dans la distribution Linux Mint, qui intègre tout ça par défaut.

Les couleurs dans le terminal


Par défaut sous Ubuntu (et ailleurs), le texte dans le terminal est tout de la même couleur. C’est difficilement lisible. Il est possible, entre autre, de mettre en couleur le texte au début d’une nouvelle ligne, le « nom@machine ~ $ » pour le rendre plus visible.
Pour cela, éditez le fichier caché .bashrc qui se trouve dans votre dossier personnel et ajoutez tout à la fin sur une nouvelle ligne :
PS1='\e[1;35m\u@\h\e[1;32m \w $ \e[0m'

Résultat :

terminal with another PS1 colors
Personnellement, j’ajoute même une nouvelle ligne avant un nouveau prompt, pour bien espacer chaque ligne (remplacez la ligne précédente par celle là) :
PS1='\n\e[1;35m\u@\h\e[1;32m \w $ \e[0m'

Pour que ça marche, éditez le fichier .bashrc, sauvegardez les changements puis ouvrez un nouveau terminal. Chaque changement dans le fichier n’est pris en compte qu’en ouvrant un nouveau terminal.
ÉDIT : pas besoin de relancer le terminal, Nono me signale la méthode où il suffit de lancer « . ~/.bashrc »

En plus, je préfère que le titre du terminal affiche le chemin courant (PWD) plutôt que « Terminal » :

PS1='\[\e]0;\w\a\]\n\e[1;35m\u@\h\e[1;32m \w $ \e[0m'[/code]
Si vous voulez changer de couleurs, sachez que ce sont les « 35 » et « 32 » que vous voyez qui font référence aux couleurs. La liste est donnée sur cette page. Le « 1; » devant la code couleur correspond au gras. Pour que les caractères ne soient pas en gras, mettez « 0; ».

ÉDIT : Kyriog me signale ce site pour créer des lignes PS1 pour bashrc. Glissez-déposez les éléments dans la ligne au dessus et récupérez le code en bas !

Command not found


Lorsque vous tapez une commande qui n’existe pas, le terminal affiche une erreur. Il est possible de lui faire suggérer l’installation d’un paquet logiciel qui contient cette commande.
Par exemple, si Firefox n’est pas installé et que vous tapez « firefox », il vous proposera alors d’installer Firefox.

Installez les paquets suivants :

sudo apt-get install command-not-found command-not-found-data

Puis ajoutez le à votre bashrc (si ça n’est pas ajouté tout seul par le fait de l’avoir installé) :

# if the command-not-found package is installed, use it
if [ -x /usr/lib/command-not-found ]; then
	function command_not_found_handle {
	        # check because c-n-f could've been removed in the meantime
                if [ -x /usr/lib/command-not-found ]; then
		   /usr/bin/python /usr/lib/command-not-found -- $1
                   return $?
		else
		   return 127
		fi
	}
fi


Cowsay


Cowsay couplé à Fortune permet d’afficher un petit dessin en ASCII qui affiche une citation. Quand j’ouvre un terminal, je vois affiché une citation au hasard énoncée par un animal au hasard : une vache, un renne, un hellokitty ou un tux.
Il faut pour cela avoir installé les paquets cowsay et fortune (et activé les paquets universe) :
sudo apt-get install cowsay fortune

Puis placer cette ligne dans le bashrc :
fortune -a | cowsay -f $(shuf -n1 -e hellokitty default tux moose)

Normalement, quand vous ouvrirez le terminal, ça fera quelque chose comme ça :

cowsay + fortunes trick

L’autocompletion


Sous Ubuntu ça semble avoir été corrigé dans la version 14.04, mais avant l’autocomplétion avec la touche de tabulation ne marchait pas ou de façon incomplète. Pourtant, en ajoutant ceci à votre fichier .bashrc, vous pouvez activer l’autocomplétion qui est quand même très pratique.

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

Maintenant, au lieu de taper « sudo aptitude install firefox », vous taperez « sudo apti<tab> i<tab> firef<tab> » ce qui fait gagner pas mal de temps.

Voilà, avec tout ça vous aurez un terminal plus joli.
Une petite astuce finale : il est possible d’ajouter n’importe quelle commande au lancement du terminal. Pour cela, il suffit de placez la commande dans le fichier .bashrc. C’est aussi simple que cela.
Par exemple pour afficher l’heure d’ouverture du terminal tout en haut, mettez « date » tout seul sur une ligne. Pour afficher les dernières commandes tapées, mettez « cat .bash_history | tail »

France OS

Mardi 10 juin 2014

minitel 1980 Ça y est, Arnaud Montebourg craque et veut son système d’exploitation Français.

Très logique.

Surtout quand ça vient tout juste un an après que l’armée Française ait renouvelé son contrat avec Microsoft et alors que toute l’administration (ou presque) tourne sous Windows et que les écoles apprennent aux élèves à n’utiliser qu’un système fermé, payant et cher (100€) alors que des systèmes gratuits, libres, sans backdoors et même Français existent déjà.

Et pour en revenir à France OS, je vous laisse avec l’ami Korben qui a eu le privilège de tester tout ça : Test de FranceOS – Le système d’exploitation Franco-français.

Espérons que la version finale et officielle sera mieux que les sites du service public Français.

image de CBerthel

La coupe du monde c’est ça…

Jeudi 05 juin 2014

Ah, le Brésil, grande nation du Football depuis très longtemps.

C’est beau la coupe du monde non ? Ils ont dépensé plus de 12 milliard d’euros pour cet événement, c’est pas rien quand on sait que ça représente environ 60€ par brésilien). Surtout pour un pays où les 3/4 de la population a faim et pourrait vivre une semaine entière avec cette somme. Mais ne croyez pas qu’ils verront un seul rond de cet investissement forcé pris sur leur impôts.

Mais on s’en fout de la population : pour construire les stade, ils ont rasé les villes et viré leurs habitants. Maintenant ils envoient les forces de l’ordre tirer sur les populations pour les éloigner et éviter qu’ils fassent trop de bruit.

Oui, ils tuent des hommes et des femmes au nom du football.

Mieux, le président de l’UEFA — Michel Platini — a même réclamé que les brésiliens arrêtent leurs manifestations pour ne pas faire tache durant la coupe du monde.

Et tout ça pour quoi ? Pour que dans un mois tout ce fric dépensé en stades se retrouvent abandonnés, comme ici avec Sotchi devenue une ville fantôme seulement un mois après les JO d’hiver.

Cette année je ne regarderai pas le foot. Avant je regardais parfois quelques matchs, mais plus maintenant. L’envers du décor est trop triste et trop révoltant pour pouvoir en apprécier quoi que ce soit.
Sous cet angle de vu, même la plus grosses des coupes en or (creuse et fausse) n’est rien qu’un vase rempli de sang.

La coupe du monde n’est pas sport et ne se joue pas avec un ballon. Il est violence et corruption et il se joue avec du fric.

illustration de Paulo Ito

image

Du foutage de gueule dans la sécurité des sites web

Mardi 03 juin 2014

password on a computer On ne rigole pas avec la sécurité. Il paraît.

Alors pourquoi certains sites nous pondent des blagues pareille ?

Un ordinateur qui fait grève :


Vu sur le site de ma banque :
Le service 3D-Secure est disponible du dimanche matin au vendredi soir.

Le service 3D Secure (certicode), c’est l’envoie d’un SMS avec un code qui renforce la sécurité lors des virements et achats en ligne. Ouais… Sauf le samedi. Car le samedi — comme tout le monde le sait — l’envoie des SMS n’est pas possible, bien-sûr Internet est également fermé le samedi tout la journée.

Un code d’authentification à 6 chiffres (aucune lettre) :


On apprend aux enfants que les mots de passe doivent être forts, mais ma banque utilise un mot de passe à 6 putains de chiffres. Vous savez combien de temps il faut pour décrypter un tel mot de passe avec un million d’essais par seconde ? Statistiquement, une demi seconde.
Oh bien-sûr, ceci uniquement dans le cas où la base de données de la banque est chiffrée et le mot de passe n’est pas stocké en clair (autrement c’est même pas 1/2 seconde qu’il faut, mais c’est instantané).
Et je ne parle même pas des trackers XiTi dans l’espace de gestion « sécurisé ». Putain…

Un mot de passe de 6 à 8 caractères, sans ponctuation :


Sur un autre site :
mot de passe entre 6 et 8 caractères
Pire, sur le site on peut taper dix ou douze caractères, c’est coupé à 8. Du coup, on pense avoir un long mot de passe alors qu’il est simplement coupé à 8 caractères, sans rien nous dire.

« Désolé le formulaire a expiré… »


À l’inverse des sites mal sécurisés, il y a les sites qui n’ont jamais été testés. Ça ne vous est jamais arrivé de remplir un formulaire à rallonges sur un site et au moment de poster, hop, il vous sort que le formulaire a expiré et vous devez tout remplir à nouveau ?
Le délai d’expiration est bien trop court pour qu’on puisse remplir le formulaire entièrement…

Autres foutages de gueule traduisant une incompétence de la part du programmeur


  • demander le type de carte bancaire (alors qu’il est trivial de le deviner à partir du numéro de carte : Mastercard a les cartes commençant par 51 à 55, Visa par 4, American Express par 3, etc.).
  • demander de retaper l’email (encore le mot de passe, ça peut se comprendre — même si y’a des méthodes —, l’adresse mail c’est juste chiant)
  • demander l’âge : qui donc va dire qu’il a moins de 13 ans pour aller sur Facebook ?
  • demander de taper son mot de passe à chaque étape d’une commande en ligne (panier, payement, validation…) : ça sert à quoi franchement ? À rien !

Image de Victor Bayon

Ubuntu 14.04 : partager l’image et le son sur une télé en HDMI

Samedi 31 mai 2014

Il est particulièrement pratique d’utiliser son ordinateur pour regarder un film sur un écran de télévision ou simplement pour avoir deux écrans de travail.

Voici comment réaliser cette manœuvre sous Ubuntu 14.04 « Trusty Thar ».

1. Sur votre télé : configurez la source de l’image pour « HDMI ».

2. Branchez le câble HDMI sur votre ordinateur. Normalement l’image s’affiche directement sur la télé, mais il y a de grandes chances que l’image soit coupée : les deux écrans (la télé et celui de votre ordinateur) n’ayant pas la même définition.

Il suffit pour corriger cela d’ouvrir les propriétés de l’affichage en cherchant « affichage » dans le menu d’Unity.
Dans la fenêtre, cliquez sur l’icône représentant l’écran de la télé (1), de changer la définition pour la même que celle de votre écran d’ordinateur (2 — si elle ne figure pas dans la liste, prenez celle qui rogne le moins l’image) et enfin de valider votre choix (3) et confirmer votre choix s’il vous convient :

changer la définition de l’écran
Voilà, l’image possède la même définition que sur votre ordinateur.

3. Maintenant que l’image est bonne, il faut changer le son. En effet, pour l’instant, le son sort toujours des hauts-parleurs de votre ordinateur.
Allez pour cela dans les paramètres du son :

ouvrir les paramètres du son
4. Dans l’onglet « Sortie » il suffit de cliquer sur la ligne représentant la carte HDMI (l’autre ligne étant les hauts parleurs) :

changer sortie sonore
5. Voilà, c’est tout !
Notez que les deux écrans sont complémentaires : l’image est partagée entre les deux écrans et n’affichent pas la même chose. Si vous lancez une instance de VLC pour voir un film, n’oubliez pas que vous pouvez glisser la fenêtre de VLC d’un écran à un autre.

Notez également que si vous souhaitez uniquement regarder un film sur un écran large, il est préférable de n’activer que le grand écran dans sa définition la plus grande et d’éteindre l’écran de l’ordinateur.

Enfin, quand vous débranchez le câble HDMI, n’oubliez pas de rétablir la sortie son sur les hauts-parleurs si le son ne revient pas tout seul.

Le hoax du jour : les panneaux solaires épuisent le Soleil

Mercredi 28 mai 2014

un panneau solaire
Les sites satyriques (du style du Gorafi.fr) sont de plus en plus nombreux mais ce n’est pas sans quelques petits problèmes.

Si parfois un canular est déguisé en véritable information (je tombe moi-même parfois dans le panneau), ces sites racontent des blagues simplement pour l’humour. Encore faut-il le comprendre et quand on ne sait pas et que personne ne sait… Ben… ça fait mal.

Le site National Report avait partagé une blague selon laquelle l’usage des panneaux solaires épuisaient le Soleil, et qu’il ne resterait que quelques siècles au Soleil avant que celui-ci soit complètement épuisé, mettant alors fin à toute existence de vie sur Terre.

L’article a été partagé en masse sur les réseau sociaux…

Ce genre de phénomène arrive très souvent, mais il faut avouer que celui-ci est quand même vraiment très gros.
Après, certains disent que plus c’est gros, mieux ça passe… Mais bon y’a des limites quand même.


Pour le côté scientifique : bien-sûr que non, l’usage des panneaux solaires n’a aucune incidence sur l’épuisement du Soleil !
Tout comme le fait de retirer une casserole du gaz (en laissant le gaz brûler) n’aura aucune incidence sur la consommation de gaz : casserole ou pas, ça brûlera autant jusqu’à ce que vous coupiez l’arrivée de gaz.

En fait, l’énergie solaire qui arrive sous forme de lumière et rayonnement électromagnétique sur les panneaux solaires arrive dans tous les cas sur Terre : les panneaux ne sont que des capteurs qui attrapent cette énergie pour la transformer en électricité au lieu de la laisser filer sur le sol.

(Via Nagumo)

Sinon voilà deux autres sites satyriques, en plus du Gorafi cité plus haut :

image de Chandra Marsono

Les touches de clavier devenues inutiles avec le temps

Lundi 26 mai 2014

Vous savez vous servir d’un ordinateur et donc d’un clavier. Mais savez-vous à quoi servent toutes les touches ? Par exemple la touche Syst ou Pause ? Je parie que non : en effet, ces touches ne sont plus jamais utilisés sur les ordinateurs actuels…
Je vous liste ici quelques-unes de ces touches et leur usage.


Touches de fonction : F1, F2, F3…


Ces touches sont rarement utilisées, mais quand on les utilise c’est souvent encore dans le sens originel : alors que les touches A ou Z affichent toujours une lettre à l’écran, les touches de fonction de F1 à F12 sont utilisées par les programmes pour effectuer des actions prédéterminées et propres à ce programme. Généralement la touche F1 correspond à l’interface d’aide, mais ce n’est pas systématique.

Par exemple, dans le logiciel Htop (sous Linux), l’action associée à chacune de ces touches est affichée en bas, tel un menu :
capture d’écran de htop en console
Sur un ordinateur portable, elles ne sont pas à confondre avec les touches bleues qui s’utilisent en combinaison avec la touche Fn qui signifie fonction aussi, mais qui sert à activer le son ou la lumière de l’écran : ce sont les touches de fonction matériel propre à l’ordinateur (quelque soit le système d’exploitation) et souvent reliés au Bios directement.

Les touches Pause et ArrêtDéf


Ces deux touches ne sont pratiquement jamais utilisées non plus. La touche ArrêtDef signifie « arrêt défilement » et active une Del du clavier (comme les touches de verrouillage numérique et majuscule).
La touche de pause est très ancienne et remonte à l’époque du télégraphe : il permettait au récepteur d’une communication de signaler à l’émetteur qu’il désirait une pause dans la transmission.

Quand les ordinateurs n’avaient pas encore d’interface graphique, les lignes défilaient à l’écran très rapidement. Les touches Pause et ArrêtDéf permettaient de stopper temporairement le défilement pour pouvoir lire ce qui est écrit : il était souvent impossible de remonter le texte pour lire ce qu’il y avait au dessous.
Appuyer de nouveau sur la touche permettait de reprendre le défilement du texte.

Aujourd’hui ces touches fonctionnent encore dans les terminaux GNU/Linux ou Unix (les TTY) et peut-être aussi dans Windows sans interface graphique. Certains jeux utilisent aussi la touchent Pause pour mettre le jeu en pause.

La touche Attn


Cette touche — dite « Attention » — est également très peu voire pas du tout utilisée. Sur certains systèmes d’exploitations presser ce bouton permettait de lancer la procédure de connexion.

Sous Windows il faut parfois faire la combinaison CtrlAltSuppr pour afficher l’écran de connexion et taper le nom d’utilisateur de le mot de passe. Cette combinaison a le même rôle que la touche d’attention.

La touche Syst


À l’instar des touches des pauses du défilement, la touche Syst date également des vieux ordinateurs : elle permettait de donner la main au système d’exploitation quand les ordinateurs n’étaient pas encore multitâches en envoyant directement une instruction au Bios (et non au pilote logiciel du clavier).

Cette touches n’est pratiquement plus utilisé aujourd’hui. Les systèmes Linux l’utilisent dans la combinaison de touches dite « magiques » pour envoyer des instructions directement au noyau Linux, par exemple pour redémarrer l’ordinateur d’urgence ou pour arrêter tous les accès disque.

La touche AltGr


Cette touche est le raccourcis de « alternate graphic » (il y a aussi une touche Alt « alternate »). Sur les vieux claviers, cette touche (comme la touche majuscule) permettait d’afficher un caractère différent de celui affiché sur la touche. C’est avec cette touche qu’on affiche le croisillon « # » sur la touche 3.

Il était à l’époque considéré que les caractères affichés à l’aide de cette touche était plus fantaisistes, plus « graphiques » que les caractères normaux comme les lettres ou la ponctuation.
Aujourd’hui, sous Windows et par défaut, il permet d’afficher les caractères en bas à droite des touches numériques au dessus des lettres, ainsi que le signe de l’euro « € ».
Sous GNU/Linux, il permet d’ajouter beaucoup plus de caractères, comme les points de suspensions « … » avec AltGrMaj; ou la ligature A-E « æ » avec AltGrA.


Outre les touches d’un clavier, il y a quelques autres éléments que les ordinateurs ou les systèmes d’exploitation actuels ont hérités des vieux systèmes.
Citons par exemple les économiseurs d’écrans (qui n’ont rien d’économique) : sur les écrans cathodiques l’image était affichée à l’aide d’un faisceau d’électrons qui excitaient une couche de poudre fluorescente. Si l’écran affichait toujours la même image, c’est toujours la même zone qui est bombardée par les électrons et ceci finissait par abîmer l’écran.
Il était donc préférable d’afficher une image bidon et qui changeait souvent en forme et en couleurs lorsque l’ordinateur n’était pas utilisé depuis un certain délai : l’économiseur d’écran sert à ça.
Parlons aussi des caractères de fin de ligne (que l’on ne voit jamais en fait, mais que les programmeurs utilisent parfois) : « \r » ou « \n ». Les deux datent de l’époque de la machine à écrire : le premier les l’abréviation de « carriage returns » dans le sens du retour chariot : le chariot (la partie qui tient le papier) de la machine à écrire se remettait au début de la ligne ; et le second vient de « newline » qui signifie « nouvelle ligne » : en plus du retour chariot, il fallait descendre sur une nouvelle ligne du papier. Logiquement donc, un retour à la ligne correspond donc à la séquence « \r\n », mais les systèmes d’exploitation informatique actuels ne s’accordent pas tous sur quel caractère utiliser pour coder un retour à la ligne : « \r\n » (Windows), « \r » (Mac-OS) ou « \n » (Unix).

[PHP] Faire plusieurs requêtes HTTP simultanées avec cURL

Mardi 20 mai 2014

two elephants Toujours en développement de mon lecteur RSS en PHP, je me suis heurté au problème de la mise à jour des 154 flux auquel je suis abonné. Si le file_get_contents() fonctionne avec les URL, il ne peut les télécharger que les uns après les autres. Ainsi, même en ne mettant qu’un délai d’attente d’une seconde, la mise à jour prendrait au minimum 2 minutes 34 secondes. C’est bien trop long.

Une solution aurait pu être de faire 154 requêtes depuis les navigateur, pour ouvrir 154 instances de file_get_contents(), mais ça me semblait trop lourd.

La meilleure solution est à mon avis d’utiliser le module curl : lui, il peut faire 154 requêtes simultanées, et la durée de l’opération totale sera simplement la durée de la plus longue des requêtes et non la somme de toutes les requêtes. Avec cette méthode, je met à jour tous mes flux en moins d’une minute, toutes opérations incluses.

En pratique, pour récupérer le contenu de plusieurs URL, ça se présente comme suit.

On initialise une liste de sessions curl « $multihandler » : chacune correspondra à une instance de curl qui ira se connecter à une URL :
// init multi handler
$multihandler = curl_multi_init();
$handlers = $result = array();

On peuple la liste des sessions : chaque session est initialisée individuellement (avec une option CURLOPT_RETURNTRANSFER qui force curl à retourner le contenu plutôt que de l’afficher) puis on ajoute la session $handler[$i] à la liste des sessions $multihandler
// init each url
foreach ($urls as $i) {
	$handlers[$i] = curl_init($i);
	curl_setopt($handlers[$i], CURLOPT_RETURNTRANSFER, TRUE);
	curl_multi_add_handle($multihandler, $handlers[$i]);
}

Il n’y a plus qu’à établir toutes les connexions aux URL et télécharger les données.
Le $pendingConnex est une variable donnée par curl qui donne le nombre de connexions actives. Ce nombre diminuera progressivement jusqu’à zéro quand toutes les URL auront été téléchargées.

Les 10 ms d’attente sont là pour éviter que PHP ne fasse trop de tests, et permet de réduire la charge serveur (si on ne le met pas, la charge serveur explose — une méthode plus propre, mais dont le gain par rapport au sleep() n’est pas énorme est visible dans la doc).
10ms, pour un temps d’exécution de 10 seconde sur un processeur qui fait une boucle par nanoseconde (proc à 1 GHz) permet de réduire le nombre d’itérations par un facteur 10'000'000, ce qui est colossal : le serveur a dix millions de fois moins de puissance à allouer.

Dans mon lecteur RSS, je mets dans cette boucle do/while le code qui m’affiche à intervalle régulier le nombre de requêtes restantes.

// exec connexions + download
do {
	curl_multi_exec($multihandler, $pendingConnex);
	usleep(10000); // 10 ms
} while ($pendingConnex > 0);

À ce stade, les requêtes sont faites, les données récupérées en mémoire.
Il suffit de les parser et de les récupérer dans le tableau $result. Ce tableau contiendra les données en valeur et les URL en clés :

// parse responses
foreach ($urls as $i) {
	$result[] = curl_multi_getcontent($handers[$i]);
}

Le code ci-dessus devrait être suffisant.
Néanmoins, je conseille d’ajouter quelques options, avec curl_setopt() :

  • Pour suivre les redirections 302 et 301 de façon transparentes :
    curl_setopt($handlers[$i], CURLOPT_FOLLOWLOCATION, TRUE);
  • Pour réduire la durée d’attente de connexion à 10 secondes :
    curl_setopt($handlers[$i], CURLOPT_CONNECTTIMEOUT, 10);
  • Pour réduire la durée d’attente de téléchargement des données à 30 secondes
    curl_setopt($handlers[$i], CURLOPT_TIMEOUT, 30);
  • Pour accepter les cookies de sessions :
    curl_setopt($handlers[$i], CURLOPT_COOKIESESSION, TRUE);

image de Jim Frost