Howto: PHP-FFMPEG avec un PHP custom.

Il y a quelques temps, j’ai cherché à installer PHP-FFMPEG au coté d’une version personnalisée de PHP, mais ce fut un échec. L’idée était de pouvoir utiliser une version PHP beaucoup plus récente que celle fourni par défaut dans la distribution (Ubuntu 8.04 et PHP 5.2.4 à l’époque).

Aujourd’hui, sous Ubuntu 12.04, j’ai à ma disposition PHP 5.3.10. Or la dernière version stable à ce jour est la 5.5.7. L’objectif n’est pas de courir après la dernière version sortie, mais d’utiliser une version pas trop vieille, et surtout encore maintenue. Il y a encore pas mal de version 5.2 qui traîne alors qu’elle n’est plus maintenue.
Continuer la lecture

Comment reprendre le téléchargement d’un fichier en PHP

Dans un précédent article, nous avons vu comment forcer le téléchargement de fichier en PHP. Vous pourrez trouver, sur plein de sites différents, des codes sources plus ou moins similaires l’un à l’autre, mais il est très rare de trouver un code de téléchargement de fichier permettant la gestion de la reprise de téléchargement. Le code de mon précédent article ne permet pas, lui non plus, de gérer la reprise du transfert (je l’avais précisé en fin d’article). Mais c’était voulu, chaque chose en son temps.

Voici quelques raisons d’implémenter cette fonctionnalité :

  • pouvoir mettre en pause afin d’effectuer une autre tâche (ex: un autre téléchargement plus important).
  • coupure imprévue (problème réseau, électricité, le chat qui passe sur la prise électrique, etc).
  • économiser de la bande passante. Quand on télécharge 30Mo sur 50Mo et qu’il faut recommencer, ça consomme de la bande inutilement.
  • pour le streaming, cela permet de naviguer dans la lecture sans attendre le téléchargement entier du fichier.
  • tout simplement parce que c’est possible, alors on le fait 😉

Je vais essayer de vous montrer comment reprendre le transfert d’un fichier en expliquant au mieux chaque étape de l’implémentation. Si toutefois, vous ne souhaitez pas avoir toutes une série d’explications avant d’avoir votre sésame, vous pouvez vous rendre immédiatement en bas de l’article récupérer le code entier.
Continuer la lecture

Comment forcer le téléchargement d’un fichier en PHP ?

Forcer le téléchargement d’un fichier consiste à forcer le navigateur à enregistrer le fichier sur votre machine au lieu de l’afficher directement dans une fenêtre (image, PDF, etc.).

En outre, ce fonctionnement permet de restreindre, si nécessaire, le téléchargement des fichiers à certains utilisateurs, suivant leur niveau d’accès par exemple.

Je vais donc vous expliquer comment gérer le téléchargement de fichier via PHP.
Continuer la lecture

Comment créer un « Lire la suite » avec TinyMCE

Pourquoi « lire la suite » ?

Récemment, j’ai eu besoin d’intégrer un système d’actualité pour mon application d’alerte mail leboncoin.fr. Le problème provient des actualités avec un long contenu. Une actualité peut effectivement occuper une grande place sur la page. Si bien que les autres passent un peu inaperçues.

La solution est donc de tronquer l’actualité afin de la rendre d’une taille raisonnable, linéarisant ainsi la page. En outre, cette technique permet d’éviter d’avoir du contenu dupliqué dans votre site web. Ce qui sera apprécié pour un bon référencement.

Pour la rédaction des articles, j’utilise TinyMCE. Je souhaite donc ajouter un bouton permettant d’insérer un élément séparateur indiquant l’endroit où l’article sera tronqué.
Continuer la lecture

Site bloqué durant un téléchargement

C’est un problème que j’ai rencontré il y a de cela quelques temps déjà. Mais, apparemment, je ne suis pas le seul à tomber dans le « piège ».

Il est parfois nécessaire de créer un script de téléchargement pour des raisons diverses (statistiques, contrôle d’accès, etc.). Mais un problème peut subvenir en cours de téléchargement : il n’est plus possible de parcourir le site. On a l’impression que le site ne répond plus, et lorsque le téléchargement est terminé, tout se débloque.

J’ai mis du temps à résoudre le problème, mais il s’avère très simple. Tout tourne autour des sessions. En effet, comme l’indique la documentation de la fonction « session_write_close« , un verrou est mis sur les fichiers de session durant l’exécution du script, ce qui fait qu’il n’est pas possible d’avoir 2 requêtes HTTP simultanées. La seconde attendant que la première soit terminée (du moins, tant que les sessions sont encore ouvertes).

Quand le fichier à télécharger ne fait que quelques kilooctets, ce problème n’est pas visible. Par contre, dans le cas de téléchargement de gros fichiers (plusieurs mega), nous pouvons voir le blocage.

La solution est donc de libérer la session (la terminer) avant l’envoi des données. Ce qui donne par exemple :

session_start();

// code de contrôle, statistique, etc.

// envoi des en-têtes …
header('...');
header('...');
header('...');

session_write_close(); // les données de session sont écrites dans le fichier, et le verrou libéré.

readfile($fichier); // on envoi maintenant les données

Et voilà, normalement le problème disparait.

ZF : envoyer des images embarquées dans un mail

Dans mon précédent article, je vous ai présenté comment envoyer un mail avec une pièce jointe. Dans la même ligné, je vais vous montrer ici comment envoyer des pièces jointes en ligne.

Qu’est qu’une pièce jointe embarquée ?

Le principe est d’attacher le fichier directement à l’intérieur du mail. Si vous créer un lien interne vers ce fichier, vous ne le verrez alors pas en tant que pièce jointe à télécharger. Ce système présente des avantages comme des inconvénients.
Continuer la lecture

ZF : Comment envoyer un mail avec une pièce jointe ?

Introduction

Que ce soit pour la confirmation d’inscription ou pour une newsletter, à un moment ou un autre, vous devrez envoyer un mail.

Mais cette tâche peut devenir compliquée, et encore plus s’il vous prend l’idée d’envoyer une ou plusieurs pièces jointes avec votre mail.

Heureusement, des bibliothèques existent et permettent d’éviter de concevoir notre propre code. Étant utilisateur de Zend Framework, je vais vous présenter comment envoyer des mails accompagnés de pièces jointes en utilisant ce dernier. Vous verrez alors la simplicité de la chose.
Continuer la lecture

Fonction PHP du jour : array_chunk()

Nous avons vu précédemment la fonction Levenshtein, permettant de calculer une distance entre deux mots.

Aujourd’hui, je vais vous présenter la fonction array_chunk(). Pour les « pros » de PHP, cela ne sera peut-être pas intéressant, mais même après des années de programmation, on passe parfois à coté de fonctions pouvant se révéler bien utiles.
Continuer la lecture

PHP / MySQL : comment résoudre les problèmes d’accents ?

Introduction

Le jeu de caractères est un point très important à connaître avant même d’écrire le premier bout de code d’un site web. Si vous négligez cette partie intégrante du développement, alors vous courrez à des risques d’incompatibilité qui se traduirons par l’apparition de caractères ressemblant à cela : é, �.

Nous allons voir dans cet article les points les plus importants à connaître pour partir du bon pied dans le développement de votre projet.

Continuer la lecture