30 juin 2011 —
Categories : gearman, php
Je me suis déjà frotté au multitâche avec PHP, et il faut dire, avec un certain recul et pas mal de temps de tests, que je suis plutot déçu par la stabilité du système mis en place. J’avais développé ça sur une base de forks de process. Ça marchait bien jusqu’à un certain point, lorsque le serveur était un peu chargé (à peine plus que d’habitude) certain de mes process plantaient aléatoirement, jamais le même process. Peut-être que j’abusais un peu, mais bon j’en ai besoin de mes 200 process moi.
Dans ma quête de stabilité, je me suis dit qu’utiliser Gearman serait une bonne idée, il est censé être simple, scalable, stable, et tout et tout.
Lire la suite →
7 avril 2011 —
Pour un projet j’utilise de façon assez intensive cURL multi dans mes scripts et je me suis rendu compte qu’il me prennait quasiment 100% de mon cpu.
// Préparation des handles cURL
do
{
curl_multi_exec($mh, $running);
}while($running>0);
// Traitement des requetes
C’est biensûr la boucle do … while qui est en cause ici.
Lire la suite →
2 juillet 2010 —
Categories : php, symfony
Coté serveur web
Il faut soit créer des virtual host pour tous vos sous-domaine.
Soit créer un seul virtual host en utilisant des wildcards dans le ServerAlias, du coup tous les sous-domaines pourraient correspondre à une application, plus besoin de créer autant de virtual hosts que de sous-domaine. Il doit même être possible d’utiliser les wildcards dans la déclaration du domaine dans le gestionnaire de dns.
ServerName domain.tld
ServerAlias *.domain.tld
Coté symfony
Il faut renommer le fichier web/index.php en web/frontend.php
Puis re-créer le fichier web/index.php en y mettant le code qui permettra de choisir l’application
en fonction du sous domaine.
Voici un exemple, il suffit de modifier le switch() pour l’adapter à vos besoins :
require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');
// Trouve le sous-domaine
list($subdomain, $domain, $tld) = explode('.', $_SERVER['HTTP_HOST']);
// En deduit l'application
switch($subdomain)
{
case "documentation":
$app = "documentation";
break;
default:
$app = "frontend";
break;
}
$configuration = ProjectConfiguration::getApplicationConfiguration($app, 'prod', false);
sfContext::createInstance($configuration)->dispatch();
26 février 2010 —
Categories : multitache, php
Pour les besoins d’un projet effectuant un grand nombre de tâches répétitives, j’ai dû mettre en place un système basé sur un script PHP lancé par cron à intervalles réguliers. Il n’y a aucune difficulté particulière à réaliser ceci, là où ça commence à être intéressant c’est à partir du moment où il a fallu que ce script puisse lancer plusieurs tâches en même temps.
On a donc un script lancé à intervalles réguliers qui lui même va lancer et gérer un certain nombre, configurable, de tâches concurrente. Voici comment j’ai procédé.
Lire la suite →
4 février 2010 —
Categorie : php
C’est pas moi qui le dit, c’est PHP.
La preuve :
Voir ça sur codepad
2 février 2010 —
Categorie : autre
D’habitude je ne parle que technique sur ce blog, mais pas cette fois-ci.
Lire la suite →
7 décembre 2009 —
Categorie : web
Il me reste 3 invitations à Google Wave, si vous en voulez une laissez moi un commentaire ici.
Faites vite, seuls les 3 premiers en auront une.
19 novembre 2009 —
Categories : apache, svn
Enfin, c’est pas vraiment une faille, c’est juste que lorsque l’on déploie un projet à partir d’un dépôt subversion, il faut faire attention aux fichiers et répertoires .svn qui peuvent être visibles, selon la configuration de votre serveur web.
Pour empêcher ça avec apache, quelques lignes dans votre httpd.conf suffisent :
<Directory ~ ".*\.svn">
Order allow,deny
Deny from all
Satisfy All
</Directory>
Thanks Anton Isaykin for pointing that out to us.
24 mars 2009 —
Categories : magento, php
Magento est un système de commerce électronique assez complexe à appréhender, il est bien mieux organisé que le vieillissant Oscommerce et peut être modifié à souhait grâce à une architecture bien pensée, basée sur Zend Framework mais qui demande quand même assez de temps pour s’y habituer. Je vous propose dans ce billet de voir comment faire pour ajouter et enlever des produits du panier de façon automatique.
Lire la suite →
7 octobre 2008 —
Categories : debug, php
PHP 5.3 à plein de nouvelles fonctionnalités à explorer, autant en profiter pour entrer dans le détail mettre en place un environnement de développement complet comprenant un profiler et un debugger.
Lire la suite →